Эту проблему я наблюдал и на С++ и на С# и на java ...
Причем успешно прочитать 0 байт можно как минимум по 2 причинам
1) Есть сокетные соединения с программой Android OC при бездействии экрана на противоположенном конце может прийти несколько пустых пакетов (может баг???)
2) Если одну из программ придушить диспетчером задач, то на противоположенном конце часто периодически сыплются такие пустые приёмы и грузят процессор довольно долго(покудо вдруг Win не сообразит выдать ошибку)
Как в таких случаях быть?
Что можно придумать кроме отсылки NOOP с таймаутом?
на MSDN видел кусок кода когда просто закрывают (не уточняя причину) — как-то не по русски
https://docs.microsoft.com/en-us/dotnet/api/system.net.sockets.socket.endreceive?view=netcore-3.1 https://docs.microsoft.com/en-us/dotnet/api/system.net.sockets.socket.endreceive?view=netcore-3.1