当前位置:编程学习 > C#/ASP.NET >>

Socket接收数据丢失数据问题


while (restSize > 0)
                {

                    Byte[] tmp = new Byte[BUFFER_SIZE];
                    int realSize = socket.Receive(tmp, BUFFER_SIZE, SocketFlags.None);
                    Buffer.BlockCopy(tmp, 0, returnBuffer, bufferSize - restSize, realSize);
                    restSize -= realSize;
                    Thread.Sleep(100);
                }


如上代码,发送的时候会先发送需要接收的字节数组的大小,也就是代码里面的bufferSize,然后循环接收,每次接收的数据拷贝到returnBuffer中。

在大部分电脑上有用,现在的情况是,在有写电脑上会存在接收不完整的情况(丢失最后一部分),请问下是什么问题,,谢谢 --------------------编程问答-------------------- 用监听通道是否有数据机制来进行接收,不要用线程隔100ms这样来读。

--------------------编程问答-------------------- 可能是接收 bufferSize 的时候多接收了一部分 --------------------编程问答-------------------- Thread.Sleep(100);去掉Receive会阻塞当前线程 你不用考虑效率低的问题
其他 貌似没什么问题 是不是发送端 发的少了? --------------------编程问答-------------------- 你可以判断一下 realSize > restSize 的情况,或者这个时候断言失败。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,