2010-05-26 3 views
18

Windows знает, когда вы удалили сетевой кабель из вашей сетевой платы. Есть ли программный способ определить это через API в C++?Обнаружение при отсоединении сетевого кабеля

Примечание: Я не использую .NET, и это для закрытой сети (не подключен к Интернету когда-либо)

+1

Ping google.com, и если вы не получите ответа, рассмотрите кабель, отсоединенный от сети. :) – Dima

+1

Это работает только в том случае, если вы подключены к Интернету через какой-то шлюз, а не в закрытую ЛВС :) – 2010-05-26 20:13:22

ответ

8

Raymond Chen blogged примерно что-то подобное недавно. Вот соответствующие documentation. Я думаю, что флаг MIB_IPADDR_DISCONNECTED - это то, что вы ищете.

1

Используйте Network List Manager api с INetwork апи.

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

Или вы можете получить список сетей, а затем проверить каждый из них, чтобы увидеть, если машина сеть подключена или нет

Помните, что машина окна часто имеют несколько сетей настройки (Ethernet, Wi-Fi и т.д.)

Помните, что только потому, что сеть подключена, у вас может не быть доступа в Интернет. Например, у вас могут быть проблемы с DNS или маршрутизацией. Или вы можете быть в рабочей сети, которая не подключена к Интернету.

Из-за вышеизложенного многие диагностические инструменты также подключаются к «хорошо известному» интернет-серверу, если они действительно хотят знать, связаны ли они или нет. Что-то вроде google.com - они тратят много денег, чтобы убедиться, что их сайт постоянно.

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

+0

Не знаете, почему все думают, что я говорю об Интернете :) Думаю, я должен был быть более ясным, это больше о закрытый сценарий локальной сети – 2010-05-26 20:14:25

+1

В сети http://msdn.microsoft.com/en-us/library/aa370750(VS.85).aspx вы можете задать отдельные вопросы: «Я в сети» и «Я в Интернете», , Этот ответ дает вам то, что вам нужно. –

+0

Что-нибудь для XP? Это говорит только о Vista и 2008 – 2010-05-26 20:28:38

Смежные вопросы