日期:2014-05-18  浏览次数:23122 次

Socket接收数据如何清空缓存区?
通过Socket发送接收消息遇到个问题
C# code

Socket newSocket = socket.Accept();
newSocket.Receive(messages);


获取消息没问题 但是总有缓存区无法清空的问题
比如说我先发一句:"我是中国人"
服务端能正确接收到这句消息:"我是中国人"
这边再发送一个字:"你"
理想状态下服务端应该显示一个字:"你"
但是实际上由于缓存区尚未清空的缘故变成了:"你是中国人"
只有当消息长度大于缓存区消息时旧消息才能被完全覆盖:"我不是中国人"
服务端这时能正确的显示:"我不是中国人"
=========================================================
发送消息这边我测试了下 发送出去的消息本身没有问题
C# code

socket.Send(byteMessage);
socket.Shutdown(SocketShutdown.Both);
socket.Close();


但是到了接收方收到消息就出问题了。我想应该是缓冲区问题 望各位大大解惑

------解决方案--------------------
这是你数组的问题 跟Socket缓冲没关系
Array.Clear 方法
Array.Clear(messages,0,messages.Length);