次のようにブロッキング読み取りを使用して、ネットワーク ストリームからリアルタイム データを消費しています。
Do
NetworkStream.Read(Bytes, 0, ReceiveBufferSize)
'Do stuff with data here
Loop
Wireshark でネットワーク上にパケットが着信するのを観察すると、新しいパケットが着信すると、.NET がすぐにそれを認識してブロックを解除し、処理できるようになることがあります。それ以外の場合は、NetworkStream.Read がブロックを解除して一度にすべてを返す前に、複数のパケットが送信されてきます。
これは予想される動作ですか?ネットワーク経由で受信した各パケットをすぐに取得して処理する方法はありますか? 非同期受信モデルはここで違いを生むでしょうか? それとも、TCP ストリームの仕組みを根本的に誤解しているだけなのでしょうか?