Чтение документации , это говорит о том, что NetworkStream.Read генерирует IOException, когда сокет закрыт.
Однако, согласно этому ответу и моим собственным экспериментам, когда другая сторона закрывает сокет, Read фактически возвращает 0.
Теперь можно сказать, что в документации сказано: «Если данные для чтения недоступны, метод Read возвращает 0.». Что ж, похоже, это не так, потому что когда нет данных, метод Read просто блокируется.
Итак, мой вопрос:
Относительно NetworkStream и следующих трех сценариев ... Когда это
1) это блок?
2) возвращает 0 байтов?
3) выдает IOException?
ПРИМЕЧАНИЕ. Пожалуйста, не говорите «прочитайте другие ответы». Другие ответы ( и документация) сбивают с толку и неясны, поэтому цель этого вопроса - уточнить различия между этими тремя случаями.