繁体   English   中英

我应该在套接字接收和另一个之间使用 Thread.Sleep 吗?

[英]Should I use Thread.Sleep between a socket reception and another?

我有一个循环,其中我必须使用套接字接收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来等待足够的数据到达吗? 如果是,多少毫秒?

无需休眠 - socket.Receive调用将阻塞直到数据可用。

来自相关的 MSDN 页面

...如果没有数据可供读取,Receive 方法将阻塞直到数据可用...

当然不。 这实际上是在浪费时间。 接收将阻塞直到数据或 EOS 到达,并且它将阻塞恰好正确的时间长度。 添加睡眠是没有意义的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM