1

Nソケットを使用してデータのバイトを受信する必要があるループがあります

int bytesRead = 0;
int offset = 0;

do
{
    var buffer = new byte[N - offset];
    bytesRead = socket.Receive(buffer, 0, buffer.Length, SocketFlags.None);
    Buffer.BlockCopy(buffer, 0, packet.Buffer, offset, bytesRead);
    offset += bytesRead;

    // Thread.Sleep(How much have I to sleep?);
}
while (offset < N);

packet.Bufferすべてのデータを保存する場所です。

Thread.Sleep十分なデータが到着するのを待つために、ソケット受信と別のソケット受信の間に使用する必要がありますか? はいの場合、何ミリ秒ですか?

4

2 に答える 2

4

スリープする必要はありませsocket.Receiveん。データが利用可能になるまで通話はブロックされます。

関連する MSDN ページから

...読み取り可能なデータがない場合、Receive メソッドはデータが利用可能になるまでブロックします...

于 2012-12-07T15:33:40.917 に答える
1

絶対にありません。文字通り時間の無駄です。受信は、データまたは EOS が到着するまでブロックされ、正確に正しい時間だけブロックされます。睡眠を追加しても意味がありません。

于 2012-12-07T22:17:09.723 に答える