UDP отправка на закрытый сокет (ERROR) - C#

Узнай цену своей работы

Формулировка задачи:

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

Решение задачи: «UDP отправка на закрытый сокет (ERROR)»

textual
Листинг программы
socket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref epSender, new AsyncCallback(ReceiveCallback), socket);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы