ソケットによるデータ受信が完了していません

データを受信できない可能性があるのは、パケットサイズが受信バッファーサイズを超えているためデータが切断されてしまうためです。受信バッファーを増やすか、データを受信する前にパケットサイズを確定し、パケットが完全受信されるまでループで受信します。サンプルコードを以下に示します。

byte[] buffer = new byte[1024];
int bytesRead = 0;
int totalBytesRead = 0;
int expectedBytes = 1000; // 假设数据包大小为1000字节
while (totalBytesRead < expectedBytes)
{
bytesRead = socket.Receive(buffer, totalBytesRead, expectedBytes - totalBytesRead, SocketFlags.None);
totalBytesRead += bytesRead;
}
byte[] completeData = new byte[totalBytesRead];
Array.Copy(buffer, completeData, totalBytesRead);

上述プログラムコードでは、预期される大きさのパケットを受け取るまで、データを繰り返し受信します。

广告
広告は10秒後に閉じます。
bannerAds
bannerAds