Обнаружение интернета V. локальная локальная сеть - PullRequest
6 голосов
/ 20 апреля 2010

Есть ли в Windows API, чтобы определить, является ли сетевое подключение компьютера с Windows 7 подключением к Интернету или подключением по локальной сети без доступа к Интернету? Windows 7 и Vista указывают это на значке сети (Только локальный v. Локальный и Интернет), есть ли способ получить эту информацию программно?

Ответы [ 5 ]

3 голосов
/ 20 апреля 2010

http://msdn.microsoft.com/en-us/library/aa370750(VS.85).aspx описывает разницу между IsConnected и IsConnectedToInternet. Только для Windows 7 Извините, у меня нет примера с собственным кодом.

1 голос
/ 20 апреля 2010

Pinging 4.2.2.2 является распространенным средством определения наличия интернет-соединения.

История, стоящая за этим , лежит здесь .

0 голосов
/ 02 марта 2012

Windows API Code Pack сделает это за вас http://archive.msdn.microsoft.com/WindowsAPICodePack

его класс NetworkListManager имеет свойство IsConnected, которое указывает, есть ли у вас подключение к локальной сети

и свойство IsConnectedToInternet, которое указывает, есть ли у вас подключение к Интернету

В загружаемом пакете содержится приложение Network Demo, которое демонстрирует это

0 голосов
/ 22 апреля 2010

Windows 7 выполняет DNS-запрос для dns.msftncsi.com через 5 секунд после установления ссылки. Не вижу причин для этого, кроме проверки интернет-соединения.

0 голосов
/ 20 апреля 2010

Не идеально.

Вы можете определить, находитесь ли вы на локальной сети с IP-адреса (при условии, что ваш локальный DHCP-сервер раздал один из частных адресов 192.168.xx.xx.)

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

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