2010-05-26 19 views
18

Windows sabe cuándo ha extraído el cable de red de su NIC. ¿Existe una forma programática para determinar esto mediante API en C++?Detectar cuando se desconectó el cable de red

Nota: No estoy usando .NET y esto es para una LAN cerrada (no conectado a Internet nunca)

+1

Haga ping en google.com, y si no obtiene respuesta, considere desconectar el cable. :) – Dima

+1

Eso solo funciona si estás conectado a Internet a través de una puerta de enlace no de una LAN cerrada :) –

Respuesta

8

Raymond Chen blogged acerca de algo similar recientemente. Aquí está el relevante documentation. Creo que el indicador MIB_IPADDR_DISCONNECTED es lo que estás buscando.

1

Uso del Network List Manager api con el INetwork API.

Puede registrar su aplicación para recibir devoluciones de llamada cuando las redes se conectan/no están conectadas.

O puede obtener la lista de redes y compruebe cada uno de ellos para ver si la máquina es la red conectada o no

Recuerde que una máquina Windows a menudo se han establecido varias redes hacia arriba (Ethernet, WiFi, etc.)

Recuerde que solo porque una red está conectada, es posible que no tenga acceso a Internet. Por ejemplo, podría tener problemas de DNS o enrutamiento. O podría estar en una red que no está conectada a Internet.

Debido a lo anterior, muchas herramientas de diagnóstico también se conectan a un servidor de Internet "bien conocido" si realmente quieren saber si están conectadas o no. Algo así como google.com: gastan una gran cantidad de dinero para asegurarse de que su sitio esté activo todo el tiempo.

Finalmente, también puede tener una situación semiconnectada en la que los paquetes se están transfiriendo, pero no lo suficiente como para permitir realmente el flujo de las comunicaciones. Para probar esto, no solo haga ping a un sitio de internet, ya que eso solo sería un par de paquetes. En su lugar, abra una conexión TCP o algo más que un ping.

+0

No estoy seguro de por qué todos piensan que estoy hablando de Internet :) Creo que debería haber sido más claro, esto es más acerca de una escenario cerrado de LAN –

+1

INetwork http://msdn.microsoft.com/en-us/library/aa370750(VS.85).aspx le permite formular las preguntas separadas "¿estoy en una red?" y "¿estoy en Internet?" . Esta respuesta te da lo que necesitas. –

+0

¿Algo para XP? Esto solo dice Vista y 2008 –

Cuestiones relacionadas