Siguiendo con esta serie vamos a ver el tercer método para conseguir detectar conectividad. Este es un poco rebuscado, y para ser franco no se me ocurrió a mi ni tampoco recuerdo ahora mismo en dónde lo aprendí o quién me lo contó :-( Pero bueno, ahí va...

Este pasa por comprobar si hay resolución DNS, y parte de la base (deduzco) de que el equipo local no es un servidor DNS, claro. Entonces lo que se hace es comprobar si se puede hacer la resolución de la IP del equipo actual, ya que si hay conectividad se puede consultar el servidor DNS. El código sería el siguiente:

    public static bool IsConnected3
    { 
        get
        { 
            try
            {  
                string hostName = Dns.GetHostName(); 
                IPHostEntry curHost = Dns.GetHostByName(hostName); 
                return curHost.AddressList[0].ToString() != IPAddress.Loopback.ToString(); 
            } 
            catch
            { 
                return false; 
            }
        }
    } 

Es decir, se obtiene el nombre del equipo actual y luego se averigua mediante una consulta DNS cuál es la IP que le corresponde. Si esa IP no es la del bucle local (127.0.0.1) entonces es que se ha resuelto bien y por lo tanto hay conectividad (contra el servidor DNS al menos).

Para mi es tal vez la más "por los pelos" de todas... ¿Qué opinas tú?

Escrito por un humano, no por una IA