静坐常思己过,闲谈莫论人非,能受苦乃为志士,肯吃亏不是痴人,敬君子方显有德,怕小人不算无能,退一步天高地阔,让三分心平气和,欲进步需思退步,若着手先虑放手,如得意不宜重往,凡做事应有余步。持黄金为珍贵,知安乐方值千金,事临头三思为妙,怒上心忍让最高。切勿贪意外之财,知足者人心常乐。若能以此去处事,一生安乐任逍遥。

NetworkStream 读取数据不完整问题

作者:大鹏 发布于:2012-6-7 16:20 Thursday 分类:Asp.Net 2.0

今天写了个发送和读取http站点数据的程序,使用TcpClient的NetworkStream读取数据,但是经常性会出现读取数据不全的现象。单步调试时基本上每次都正常,但是实际应用时就会出现读取到的数据不完整。
弄了一天,还是没有找到更好的解决办法。
private void Forward(object obj)
        {
            int requestsize = 4096;
            string log = "";
            try
            {
                TcpClient client = (TcpClient)obj;
                NetworkStream s = client.GetStream();
                int i = 0;
                byte[] buff = new byte[requestsize];

                TcpClient server = new TcpClient("127.0.0.1", 8080);
                NetworkStream cs = server.GetStream();



                i = s.Read(buff, 0, buff.Length);
                cs.Write(buff, 0, i);
                log += "Request:" + Encoding.Default.GetString(buff, 0, i);

                buff = new byte[requestsize];
                i = cs.Read(buff, 0, buff.Length);
                s.Write(buff, 0, i);
                log += "\r\nResponse:" + Encoding.Default.GetString(buff, 0, i);

                cs.Close();
                //s.Close();

                server.Close();
                client.Close();
                Log(log);
            }
            catch (Exception ex)
            {
                Log("Forward", ex);
            }
        }

et_highlighter
发表评论 »本文目前尚无任何评论

发表评论

干净网络从你做起,切勿黏贴小广告