Comprobar la conexión a Internet en C#

Saad Aslam 12 octubre 2023
  1. Utilice GetIsNetworkAvailable() para comprobar la conexión a Internet en C#
  2. Utilice InternetGetConnectedState(wininet) para comprobar la conexión a Internet en C#
  3. Haga ping a una dirección IP para comprobar la conexión a Internet en C#
Comprobar la conexión a Internet en C#

Este artículo explica cómo comprobar si la conexión a Internet está disponible o no en el lenguaje de programación C#.

En algunos casos de uso, necesitaremos usar el código C# en las aplicaciones de Windows para determinar si se puede acceder o no a una conexión a Internet. Puede ser para descargar o cargar un archivo a través de Internet en Windows Forms; alternativamente, podría ser adquirir algunos datos de una base de datos ubicada en un área distante.

De cualquier manera, se requiere una verificación de Internet en estas circunstancias.

Existen algunos enfoques diferentes para comprobar la accesibilidad de Internet mediante C#. Veremos todas estas diferentes técnicas con su implementación.

Utilice GetIsNetworkAvailable() para comprobar la conexión a Internet en C#

El método GetIsNetworkAvailable() se utilizará en el siguiente ejemplo para determinar si una conexión a una red es accesible o no.

Código fuente:

using System.Net.NetworkInformation;

public class CheckInternetConnecition {
  static void Main(string[] args) {
    if (NetworkInterface.GetIsNetworkAvailable()) {
      Console.WriteLine("The internet connection is available.");
    } else {
      Console.WriteLine(
          "The internet connection is not available. Please connect to the internet and try again.");
    }
  }
}

El programa mostrará el caso true si la conexión a Internet está disponible.

The internet connection is available.

Si la computadora no puede establecer una conexión a Internet, el código producirá un caso false.

The internet connection is not available. Please connect to the internet and try again.

Utilice InternetGetConnectedState(wininet) para comprobar la conexión a Internet en C#

La interfaz de programación de aplicaciones (API) wininet puede determinar si la máquina local tiene una conexión a Internet operativa.

El espacio de nombres System.Runtime.InteropServices se utiliza para esto, y la herramienta DllImport se usa para importar el archivo wininet.dll.

Después de esto, construye una variable booleana con extern static y una función llamada InternetGetConnectedState. Esta función debe tener dos parámetros: descripción y valor reservado.

A continuación, debe escribir un método que devuelva un valor booleano y use el nombre IsInternetAvailable. Este método utilizará la función que se acaba de analizar, que devuelve el estado de Internet del sistema local.

Código fuente:

using System.Runtime.InteropServices;

public class PingIP {
  [DllImport("wininet.dll")]
  private extern static bool InternetGetConnectedState(out int desc, int resValue);
  public static bool IsInternetAvailable() {
    int desc;
    return InternetGetConnectedState(out desc, 0);
  }
  static void Main(string[] args) {
    if (IsInternetAvailable()) {
      Console.WriteLine("The internet connection is available.");
    } else {
      Console.WriteLine(
          "The internet connection is not available. Please connect to the internet and try again.");
    };
  }
}

El programa mostrará el caso true si la conexión a Internet está disponible.

The internet connection is available.

Si la computadora no puede establecer una conexión a Internet, el código producirá un caso false.

The internet connection is not available. Please connect to the internet and try again.

Haga ping a una dirección IP para comprobar la conexión a Internet en C#

Ping es una clase que las aplicaciones pueden usar para determinar si una máquina remota es accesible o no. Su capacidad para llegar efectivamente a un host distante depende en cierta medida de la topología de la red.

El nombre de host o la dirección y un valor de tiempo de espera se envían al método Send() de la clase Ping. Enviar un mensaje dará como resultado que se devuelva un objeto PingReply si el mensaje se recibe correctamente.

Si se envía una solicitud de eco ICMP y se recibe una respuesta satisfactoria, el valor de Estado se establecerá en Éxito.

Código fuente:

using System.Net.NetworkInformation;

public class PingIP {
  static void Main(string[] args) {
    Ping myPing = new Ping();
    PingReply reply = myPing.Send("192.168.10.16", 1000);
    if (reply.Status == IPStatus.Success) {
      Console.WriteLine("The internet connection is available.");
    } else {
      Console.WriteLine(
          "The internet connection is not available. Please connect to the internet and try again.");
    }
  }
}

El programa mostrará el caso true si la conexión a Internet está disponible.

The internet connection is available.

Si la computadora no puede establecer una conexión a Internet, el código producirá un caso false.

The internet connection is not available. Please connect to the internet and try again.
Autor: Saad Aslam
Saad Aslam avatar Saad Aslam avatar

I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.

LinkedIn