Если это поток на основе TCP, то ответ таков: остальные данные просто еще не поступили.
TCP ориентирован на поток.Это означает, что нет никакого отношения между количеством вызовов Send
/ Write
и количеством событий приема.Несколько записей могут быть объединены вместе, и отдельные записи могут быть разделены.
Если вы хотите работать с сообщениями по TCP, вам необходимо реализовать свой собственный алгоритм пакетирования поверх него.Типичные стратегии для достижения этой цели:
- Префикс каждого упакован по своей длине, обычно с двоичными данными
- Используйте последовательность разделения, такую как разрыв строки.Обычно с текстовыми данными.
Если вы хотите прочитать все данные блокирующим способом, вы можете использовать цикл до тех пор, пока DataAvailable
не станет true
, но последующий вызов Read
вернет 0
.(Надеюсь, я правильно запомнил эту часть, некоторое время не занимался сетевым программированием)