簡體   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