Puede usar IsNetworkAlive(). Aunque técnicamente no verifica el estado del enlace, probablemente sea mejor, ya que también puede detectar conectividad inalámbrica y de acceso telefónico. Aquí hay un ejemplo:
using System.Runtime.InteropServices;
class Program
{
[DllImport("sensapi.dll")]
static extern bool IsNetworkAlive(out int flags);
static void Main(string[] args)
{
int flags;
bool connected = IsNetworkAlive(out flags);
}
}
El parámetro flags devuelve si la conexión es a Internet o simplemente a una LAN. No estoy 100% seguro de cómo lo sabe, pero apostaría a que solo busca ver si hay un conjunto de puertas de enlace predeterminado.
¿Cuál es la diferencia entre la red inactiva y el cable desenchufado? ¿Qué sucede si desenchufo el otro extremo del cable? – mouviciel
Si la red no funciona, está bien. Si pudiera usar lo que sea que detecte que un cable ha sido desenchufado y aparezca un mensaje que diga "Se ha desenchufado un cable de red", sería genial. –
El punto, creo, es que no hay diferencia entre que la red esté baja, el cable esté desenchufado en su extremo o el cable esté desenchufado en el otro extremo. –