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#