Обнаружение сбоя сокета - PullRequest
0 голосов
/ 31 марта 2011

Мне интересно узнать, как я могу обнаружить (на стороне сервера), что соединение с сокетом не удалось, когда на клиентском компьютере отключен сетевой кабель или он был перезагружен.Это было бы полезно для проекта клиент-сервер в c #.

. В настоящее время я могу обнаруживать исключения сокетов, только когда клиент закрывает приложение и неявно сокет.

Погуглив немного, я нашел о FD_CLOSE IEvent из WSAAsyncSelect.Будет ли это работать для случаев, которые я описал выше?

1 Ответ

0 голосов
/ 31 марта 2011

Посмотрите на этот ответ: Мгновенное обнаружение отключения клиента от сокета сервера

UPDATE

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

Внутри Ws2_32.dll (Winsock2) есть собственный метод WSAEventSelect, но он используется только для обнаружения причины недоступности сети на локальном компьютере (где работает приложение).

Я заглянул внутрь System.Net.NetworkInformation.NetworkChange исходного кода класса и там вы можете видеть, что все, что связано с WSAEventSelect, относится к локальной машине (в вашем случае к серверу).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...