我使用以下代码从工具接收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(缓冲区)时,新数据包都会附加缓冲区中包含的旧数据包。我想避免这种情况。对此有什么解决方案吗?
答案 0 :(得分:1)
Receive
不接收数据包。它接收大于零字节的任何字节数。使用返回值receiveLength
来查明实际接收的数量并仅处理该数量。