В каком случае EndSend получит исключение SocketException?
Согласно MSDN метод Socket.EndSend может генерировать исключение SocketException для сокета с использованием протокола, ориентированного на соединение. Когда?
Я протестировал пару сценариев, и ни один из них не вызвал исключение SocketException.
Сценарий 1. Приложение вызывает BeginSend, и пока оно отправляет данные, приложение вызывает BeginDisconnect/Disconnect
Результат: Socket не отправляет FIN до тех пор, пока не будут отправлены все данные, и EndSend будет успешным.
Сценарий 2. Приложение вызывает BeginSend, и пока оно отправляет данные, сокет получает RST от удаленной конечной точки.
Результат: Socket прекращает отправку данных, вызывает Callback, и EndSend успешно сообщает, что все байты были отправлены. Не понимаю почему?
Когда метод Socket.EndSend генерирует исключение SocketException для протокола, ориентированного на соединение?
1 ответ
Я знаю, что это вызывает ошибку, если соединение было разорвано (в отличие от обычного отключения). Вы должны быть в состоянии воспроизвести это поведение, потянув сетевой кабель. Если вы не можете, пожалуйста, напишите код.