Vb.net 解释NetworkStream。需要读取行为

Vb.net 解释NetworkStream。需要读取行为,vb.net,networkstream,Vb.net,Networkstream,我使用阻塞读取从网络流消耗实时数据,如下所示: Do NetworkStream.Read(Bytes, 0, ReceiveBufferSize) 'Do stuff with data here Loop 看着Wireshark中的数据包在网络上传输,我发现有时候当一个新的数据包传入时,.NET会立即看到它并解除阻塞,让我处理它。其他情况下,在NetworkStream.Read解除阻塞之前,多个数据包将在网络上传输。Read解除阻塞并一次返回全部数据包-在NetworkStrea

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

Do
  NetworkStream.Read(Bytes, 0, ReceiveBufferSize)
  'Do stuff with data here
Loop
看着Wireshark中的数据包在网络上传输,我发现有时候当一个新的数据包传入时,.NET会立即看到它并解除阻塞,让我处理它。其他情况下,在NetworkStream.Read解除阻塞之前,多个数据包将在网络上传输。Read解除阻塞并一次返回全部数据包-在NetworkStream读取解除阻塞之前,我已经看到多达8个数据包缓冲区

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