verificar saber net internet hay estoy detectar conexion conectado comprobar como acceso c# windows-phone-8 windows-phone-8.1 network-connection

c# - saber - vb net verificar conexion a internet



Cómo verificar la disponibilidad de conexión a Internet en la aplicación Windows Phone 8 (7)

Estoy desarrollando la aplicación Windows Phone 8 . En esta aplicación, tengo que conectarme al servidor para obtener los datos.

Entonces, antes de conectarme al servidor, quiero verificar si la conexión a Internet está disponible o no en el dispositivo. Si la conexión a internet está disponible, solo obtendré los datos del servidor. De lo contrario, mostraré un mensaje de error.

Por favor dígame cómo hacer esto en Windows Phone 8.


Puede usar NetworkInformation.GetInternetConnectionProfile para obtener el perfil que está actualmente en uso, a partir de esto puede calcular el nivel de conectividad. Más información aquí GetInternetConnectionProfile msdn

Ejemplo de cómo podrías usar

private void YourMethod() { if (InternetConnection) { // Your code connecting to server } } public static bool InternetConnection() { return NetworkInformation.GetInternetConnectionProfile().GetNetworkConnectivityLevel() >= NetworkConnectivityLevel.InternetAccess; }


Así es como lo hice ...

class Internet { static DispatcherTimer dispatcherTimer; public static bool Available = false; public static async void StartChecking() { dispatcherTimer = new DispatcherTimer(); dispatcherTimer.Tick += new EventHandler(IsInternetAvailable1); dispatcherTimer.Interval = new TimeSpan(0, 0, 10); //10 Secconds or Faster await IsInternetAvailable(null, null); dispatcherTimer.Start(); } private static async void IsInternetAvailable1(object sender, EventArgs e) { await IsInternetAvailable(sender, e); } private static async Task IsInternetAvailable(object sender, EventArgs ev) { string url = "https://www.google.com/"; var httpWebRequest = (HttpWebRequest)WebRequest.Create(url); httpWebRequest.ContentType = "text/plain; charset=utf-8"; httpWebRequest.Method = "POST"; using (var stream = await Task.Factory.FromAsync<Stream>(httpWebRequest.BeginGetRequestStream, httpWebRequest.EndGetRequestStream, null)) { string json = "{ /"302000001/" }"; //Post Anything byte[] jsonAsBytes = Encoding.UTF8.GetBytes(json); await stream.WriteAsync(jsonAsBytes, 0, jsonAsBytes.Length); WebClient hc = new WebClient(); hc.DownloadStringCompleted += (s, e) => { try { if (!string.IsNullOrEmpty(e.Result)) { Available = true; } else { Available = false; } } catch (Exception ex) { if (ex is TargetInvocationException) { Available = false; } } }; hc.DownloadStringAsync(new Uri(url)); } } }

Como Windows Phone 8 no tiene una forma de verificar la conectividad a Internet, debe hacerlo enviando una solicitud HTTP POST. Puede hacerlo enviándolo a cualquier sitio web que desee. Escogí google.com. Luego, verifique cada 10 segundos o menos para actualizar el estado de la conexión.


public static bool checkNetworkConnection() { var ni = NetworkInterface.NetworkInterfaceType; bool IsConnected = false; if ((ni == NetworkInterfaceType.Wireless80211)|| (ni == NetworkInterfaceType.MobileBroadbandCdma)|| (ni == NetworkInterfaceType.MobileBroadbandGsm)) IsConnected= true; else if (ni == NetworkInterfaceType.None) IsConnected= false; return IsConnected; }

Llame a esta función y compruebe si la conexión a Internet está disponible o no.


Puede usar el método NetworkInterface.GetIsNetworkAvailable() . Devuelve verdadero si la conexión de red está disponible y falso si no. Y no olvide agregar using Microsoft.Phone.Net.NetworkInformation o using System.Net.NetworkInformation si está en PCL.


Dado que esta pregunta aparece en el primer resultado de la búsqueda de Google para verificar la disponibilidad de Internet, pondría la respuesta para el teléfono con Windows 8.1 XAML también. Tiene un poco de API diferentes en comparación con 8.

//Get the Internet connection profile string connectionProfileInfo = string.Empty; try { ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile(); if (InternetConnectionProfile == null) { NotifyUser("Not connected to Internet/n"); } else { connectionProfileInfo = GetConnectionProfile(InternetConnectionProfile); NotifyUser("Internet connection profile = " +connectionProfileInfo); } } catch (Exception ex) { NotifyUser("Unexpected exception occurred: " + ex.ToString()); }

Para obtener más información, vaya a MSDN Cómo recuperar la conexión de red ...


Puede haber algún retraso en la respuesta de la solicitud web. Por lo tanto, este método puede no ser lo suficientemente rápido para algunas aplicaciones. Esto verificará la conexión a internet en cualquier dispositivo. Una mejor manera es verificar si el puerto 80, el puerto predeterminado para el tráfico http, de un sitio web siempre en línea.

public static bool TcpSocketTest() { try { System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient("www.google.com", 80); client.Close(); return true; } catch (System.Exception ex) { return false; } }


NetworkInterface.GetIsNetworkAvailable() devuelve el estado de las NIC.

Según el estado, puede preguntar si la conectividad se establece utilizando:

ConnectionProfile clase de Windows Phone 8.1 que utiliza la enum NetworkConnectivityLevel :

  • Ninguna
  • Acceso local
  • Acceso a Internet

Este código debería hacer el truco.

bool isConnected = NetworkInterface.GetIsNetworkAvailable(); if (isConnected) { ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile(); NetworkConnectivityLevel connection = InternetConnectionProfile.GetNetworkConnectivityLevel(); if (connection == NetworkConnectivityLevel.None || connection == NetworkConnectivityLevel.LocalAccess) { isConnected = false; } } if(!isConnected) await new MessageDialog("No internet connection is avaliable. The full functionality of the app isn''t avaliable.").ShowAsync();