UDP отправка на закрытый сокет (ERROR) - C#
Формулировка задачи:
Уже неделю не могу решить эту проблему!
Я клиентов на сервере обрабатываю асинхронно в ReceiveCallback(IAsyncResult ar), когда от клиента приходит сообщение, то проверяю если его нету в Dictionary, то добавляю туда его Socket и EndPoint, после через foreach рассылаю сообщение всем клиентам которые находятся в Dictionary
Проблема в том, что если один из клиентов закроет приложение, то его порт становится недоступным и когда сервер пытается отправить пакеты на соккет того не доступного клиента, то выходит ошибка =(
И самое интересное ошибка выходит не вот тут:
Тогда бы я просто катчем проверял, а она появляется в ReceiveCallback вот на этой строке:
Ошибка: An unhandled exception of type 'System.Net.Sockets.SocketException' occurred in System.dll
Additional information: Удаленный хост принудительно разорвал существующее подключение
(видимо нужно каждый раз при отправке каким то образом проверять доступен ли соккет у клиента)
foreach (var clientData in DataList) { clientData.Value.Socket.SendTo(data1, clientData.Value.EndPoint); }
socket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref epSender, new AsyncCallback(ReceiveCallback), epSender);
Решение задачи: «UDP отправка на закрытый сокет (ERROR)»
textual
Листинг программы
socket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref epSender, new AsyncCallback(ReceiveCallback), socket);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д