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 回答