需要解释NetworkStream.Read行为

时间:2011-06-10 13:16:00

标签: vb.net networkstream

我使用阻塞读取从网络流中消耗实时数据,如下所示:

Do
  NetworkStream.Read(Bytes, 0, ReceiveBufferSize)
  'Do stuff with data here
Loop

看到Wireshark中的数据包,我看到有时当一个新数据包进入时,.NET会立即看到它并解除阻塞,让我处理它。其他时候,在NetworkStream.Read取消阻塞并且一次性返回整个批次之前,多个数据包将进入线路 - 在NetworkStream读取解除阻塞之前,我已经看到最多8个数据包缓冲区。

这是预期的行为吗?有没有办法在通过线路接收时立即抓取并处理每个数据包? Async接收模型会不会有任何区别?或者我只是从根本上误解了TCP流的工作方式?

0 个答案:

没有答案