У меня есть простая программа, которая использует TcpClient и SslStream для записи данных в сокет.
Чтобы проверить это, я запустил программу за ночь, чтобы моя программа открывала соединение, долго ничего не писала, чтобы брандмауэр или удаленный сервер закрывали соединение. Этим утром я посмотрел на TCPView и убедился, что соединение закрыто, а затем сказал моей программе записать в сокет.
Не было сгенерировано исключение при записи. Однако при следующей записи было сгенерировано исключение, как и ожидалось: «System.IO.IOException: невозможно записать данные в транспортное соединение: существующее соединение было принудительно закрыто удаленным хостом»
Я могу понять, почему TcpClient.Connected мог возвращать True, даже если он действительно не был подключен, но почему бы Write не выдавал исключение для соединения, которое было фактически закрыто (как проверено в TCPView)?