Если вы хотите знать, когда меняется состояние сети, вы можете подписаться на событие System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged
. Это не относится только к Интернету, только к локальной сети.
EDIT
Извините, я неправильно понял. Понятие «подключенный» действительно не существует, чем больше вы думаете об этом. Этот пост проделывает большую работу, чтобы вдаваться в подробности об этом. В TcpClient
есть свойство Connected
, но MSDN говорит (выделено мое):
Потому что только свойство Connected
отражает состояние соединения
с самой последней операции вы
должен попытаться отправить или получить
сообщение для определения текущего
государство. После неудачной отправки сообщения
это свойство больше не возвращает true.
Обратите внимание, что это поведение предусмотрено дизайном.
Вы не можете надежно проверить состояние
связь, потому что во времени
между тестом и отправкой / получением,
связь могла быть потеряна.
Ваш код должен предполагать, что сокет
подключен, и изящно обрабатывать
сбой передачи.
По сути, единственный способ проверить клиентское соединение - это попытаться отправить данные. Если это проходит, вы подключены. Если это не удается, вы не.