收到数据包后清除缓冲区

时间:2015-05-12 09:01:26

标签: c# sockets tcp

我使用以下代码从工具接收TCP数据包。

while(socket.Connected)
{
  var buffer = new byte[4096];
  int receiveLength = socket.Receive(buffer);
  if (receiveLength != 0)
  {

     byte[] response= new byte[4096];
     ProcessPacketData(buffer, out response);

     socket.Send(resposne);
  }
//Sleep(100);
}

使用此代码时,我面临的问题是,对于socket.Receive()函数,缓冲区不会被刷新。每次调用socket.Receive(缓冲区)时,新数据包都会附加缓冲区中包含的旧数据包。我想避免这种情况。对此有什么解决方案吗?

1 个答案:

答案 0 :(得分:1)

Receive不接收数据包。它接收大于零字节的任何字节数。使用返回值receiveLength来查明实际接收的数量并仅处理该数量。