Я использую данные в реальном времени из сетевого потока, используя блокировку, читаемую следующим образом:
Do
NetworkStream.Read(Bytes, 0, ReceiveBufferSize)
'Do stuff with data here
Loop
Наблюдая за тем, как пакеты поступают по проводам в Wireshark, я вижу, что иногда, когда приходит новый пакет, .NET видит его немедленно и разблокирует, позволяя мне обработать его. В других случаях несколько пакетов будут поступать по сети до того, как NetworkStream.Read разблокирует и вернет весь лот за один раз - я видел до 8 пакетов буфера, прежде чем чтение NetworkStream разблокирует.
Это ожидаемое поведение? Есть ли способ получить и обработать каждый пакет сразу после его получения по проводам? Будет ли модель приема Async иметь какое-то значение здесь? Или я просто не понимаю, как работают потоки TCP?