收到数据包后刷新缓冲区

Flush the buffer after receiving packets

我正在使用以下代码从工具接收 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(buffer) 时,新数据包都会附加缓冲区中包含的旧数据包。我想避免这种情况。有解决办法吗?

Receive 没有收到数据包。它接收大于零字节的任意数量的字节。使用 return 值 receiveLength 找出实际收到的金额并仅处理该金额。