В каком случае EndSend получит исключение SocketException?

Согласно MSDN метод Socket.EndSend может генерировать исключение SocketException для сокета с использованием протокола, ориентированного на соединение. Когда?

Я протестировал пару сценариев, и ни один из них не вызвал исключение SocketException.

Сценарий 1. Приложение вызывает BeginSend, и пока оно отправляет данные, приложение вызывает BeginDisconnect/Disconnect
Результат: Socket не отправляет FIN до тех пор, пока не будут отправлены все данные, и EndSend будет успешным.

Сценарий 2. Приложение вызывает BeginSend, и пока оно отправляет данные, сокет получает RST от удаленной конечной точки.
Результат: Socket прекращает отправку данных, вызывает Callback, и EndSend успешно сообщает, что все байты были отправлены. Не понимаю почему?

Когда метод Socket.EndSend генерирует исключение SocketException для протокола, ориентированного на соединение?

1 ответ

Решение

Я знаю, что это вызывает ошибку, если соединение было разорвано (в отличие от обычного отключения). Вы должны быть в состоянии воспроизвести это поведение, потянув сетевой кабель. Если вы не можете, пожалуйста, напишите код.

Другие вопросы по тегам