No es preciso saber si una computadora esta conectada a Internet con C# pero podemos saber si efectivamente se realizo la conexión a un sitio especifico y deducir si la computadora esta efectivamente conectada o no.
Podemos verificar un par de cosas que si bien no nos aseguran que se realice una conexión efectiva si pueden ayudarnos a verificarla.
Primero podemos revisar la conexión a la Red local, si no esta conectada entonces no hay Internet, de lo contrario solo podemos asegurar que esté conectada al módem por ejemplo mas no que tenga salida a Internet.
string Estado = ""; bool RedActiva = System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable(); if (RedActiva) Estado = "Se estableció conexión con la red local"; else Estado = "No está conectado a la red";
Ahora si estamos conectados a la Red podemos enviar un ping a una pagina en Internet para asegurar la conexión.
string Estado = ""; System.Uri Url = new System.Uri("https://www.google.com/"); System.Net.WebRequest WebRequest; WebRequest = System.Net.WebRequest.Create(Url); System.Net.WebResponse objetoResp; try { objetoResp = WebRequest.GetResponse(); Estado = "Se establecio conexión a internet corretamente."; objetoResp.Close(); }catch (Exception e) { Estado = "No se pudo conectar a Internet " + e.Message; } WebRequest = null;
Si se realiza correctamente podemos asegurar que si hay conexión, de lo contrario tenemos que esperar a que entre al catch y eso puede tardar unos segundos.
No se puede hacer conexión con todos los sitios por la configuración de cada uno de ellos, con google.com si se puede y es el que mas se usa para estos casos, de lo contrario puede arrojar un mensaje como este
No se puede crear un canal seguro SSL/TLS.
Pero eso no asegura que la conexión fue fallida.