C # 的Socket 怎么设置接收一次数据就把接收缓存清除

myavrmcu1 2016-12-11 12:30:13
如题,由于接收的数据量较大,但是只需要接收数据的前面几行数据,但是第二次再接收时,收到的就是缓存里面的数据 ,不是最新获取的数据,所以,接收缓存怎么接收一下就清掉?

private string WriteSyncData(Socket dataSocket, string sendStr) {

if (dataSocket != null && dataSocket.Connected) {
try {
//Convert string to byte
byte[] bytesSendStr = new byte[1024];
bytesSendStr = Encoding.ASCII.GetBytes(sendStr);

dataSocket.Send(bytesSendStr, 0, bytesSendStr.Length, SocketFlags.None);
int result =0;
StringBuilder content = new StringBuilder();
try {
result = dataSocket.Receive(_Buffer, 0, _Buffer.Length, SocketFlags.None);//这里我接收一次后怎么就清了Socket的缓存,不然下次接收的就不是最新的发送来的数据了
content.Append(Encoding.ASCII.GetString(_Buffer, 0, result));
//dataSocket.ReceiveBufferSize = 0;//这个方法不可行

} catch (SystemException ex) {
throw ex;
}

//if (result == 0) {
// CallException(EXCEPTION_CONN_LOST);
// return null;
//}

return content.ToString();
} catch (SystemException ex) {
LogService.Error(ex);
CallException(EXCEPTION_CONN_LOST);
}
}

return null;
}
...全文
1503 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Poopaye 2016-12-11
  • 打赏
  • 举报
回复
引用 4 楼 myavrmcu1 的回复:
由于接收的数据量比较大,一次是接收不完的,还在Socket的缓存里,下一次再执行接收收到的是缓存里的后半段的数据,但是我不需要这后面的数据了,我还是需要新的发送来的数据,所以每次接收都需要清除Socket的缓存,Content是我接收的数据,肯定是不能清的呀,另外的函数还需要获取分析呢
先把后半段读走不就行了?
myavrmcu1 2016-12-11
  • 打赏
  • 举报
回复
引用 2 楼 shingoscar 的回复:
………………你哪里清过content的数据了?
Content是我接收的数据,肯定是不能清的呀,另外的函数还需要获取分析呢
myavrmcu1 2016-12-11
  • 打赏
  • 举报
回复
由于接收的数据量比较大,一次是接收不完的,还在Socket的缓存里,下一次再执行接收收到的是缓存里的后半段的数据,但是我不需要这后面的数据了,我还是需要新的发送来的数据,所以每次接收都需要清除Socket的缓存,Content是我接收的数据,肯定是不能清的呀,另外的函数还需要获取分析呢
Poopaye 2016-12-11
  • 打赏
  • 举报
回复
引用 2 楼 shingoscar 的回复:
………………你哪里清过content的数据了?
还错了,还是看1楼
Poopaye 2016-12-11
  • 打赏
  • 举报
回复
………………你哪里清过content的数据了?
Poopaye 2016-12-11
  • 打赏
  • 举报
回复
本来接受就清掉的 肯定是因为发送过来的数据每次都一样

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧