c++ - tengo - Detectar cuando se desconecta el cable de red
usar un cable de red para dos conexiones (2)
Windows sabe cuándo ha retirado el cable de red de su NIC. ¿Hay una manera programática de determinar esto a través de API en C ++?
Nota: no estoy usando .NET y esto es para una LAN cerrada (nunca conectada a Internet)
Raymond Chen blogged acerca de algo similar recientemente. Aquí está la documentation relevante. Creo que el indicador MIB_IPADDR_DISCONNECTED es lo que está buscando.
Utilice la api de Network List Manager con la API de INetwork.
Puede registrar su aplicación para recibir devoluciones de llamada cuando las redes se conecten o no.
O puede obtener la lista de redes y luego verificar cada una de ellas para ver si la máquina está conectada a la red o no.
Recuerde que una máquina con Windows a menudo tendrá varias redes configuradas (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 enrutamiento o DNS. O bien, podría estar en una red en funcionamiento 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 conectados o no. Algo así como google.com: gastan mucho dinero para asegurarse de que su sitio esté activo todo el tiempo.
Finalmente, también puede tener una situación semi-conectada donde los paquetes están llegando pero no lo suficiente como para permitir que las comunicaciones fluyan. Para probar esto, no solo haga ping a un sitio de Internet, ya que solo serían un par de paquetes. En su lugar, abra una conexión TCP o algo más que un ping.