Я пишу программу связи с режимом c/s в C#, серверной и клиентской программе на другом компьютере. Сегодня после того, как клиент progarm подключился к серверному progarm, я вытащил кабель из сетевого адаптера (после этого клиентская и серверная программа ничего не сделала), произошло нечто странное. Я обнаружил, что сокет серверной программы все еще сохраняет статус соединения. и я использую команду "NetStat -a -n" для получения информации о сети и получать информацию, как следующее:Как получить статус сокета при отсоединении сетевого кабеля от сетевого адаптера
TCP 192.168.1.2:3645 192.168.1.3:1863 СОЗДАН
192.168.1.2 (IP-адрес сервера) 192.168.1.3 (IP-адрес клиента)
Кто-нибудь знает причину? Как решить эту проблему . Я хочу, как серверная программа может получить событие и закрыть сокет, когда был вынут сетевой кабель клиентского компьютера.
Пожалуйста, дайте мне несколько советов или решений.
Благодаря
запомнить, socket.Connected (или IsConnected, я забыл) сообщит вам только статус сокета после последней команды. Поэтому, если ваша последняя команда была успешной, она вернет true. Если вы вытащите кабель, он будет оставаться верным, пока вы не попытаетесь его использовать, и что-то не удастся. – NibblyPig