2

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

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

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

这是预期的行为吗?有没有办法在通过网络接收到每个数据包时立即抓取和处理它?异步接收模型在这里会有什么不同吗?还是我只是从根本上误解了 TCP 流的工作方式?

4

0 回答 0