ATENCIÓN: este contenido tiene más de 2 años de antigüedad y, debido a su temática, podría contener información desactualizada o inexacta en la actualidad.
.NET dispone de un espacio de nombres pensado específicamente para crear aplicaciones de diagnóstico de redes. Se trata de System.Net.NetworkInformation.
En él encontramos clases para obtener información sobre las interfaces de red de un equipo, información trasegada por la red, recibir notificaciones (por ejemplo de que se ha modificado la dirección de una tarjeta), etc... Es muy interesante echarle un vistazo.
La clase Ping, por ejemplo, tal y como parece indicar permite hacer un "ping" ICMP a cualquier nodo de una red. Permite hacerlo de forma síncrona o asíncrona. Algunos de vosotros recordaréis cuando había que hacerlo "a pelo" (versiones anteriores a la 2.0) y era bastante complicado. Ahora es sencillísimo.
Por ejemplo, el siguiente código realiza cuatro pings a Google y devuelve los resultados de cada petición.
using System.Net;
using System.Net.NetworkInformation;
IPAddress ip = IPAddress.Parse("66.249.87.104"); //Google
Ping ping = new Ping();
for (int i = 0; i < 4; i++)
{
PingReply pr = ping.Send(ip);
Console.WriteLine("Respuesta desde (0): bytes:(1) tiempo=(2) ((3))",
pr.Address, pr.Buffer.Length, pr.RoundtripTime,
pr.Status.ToString());
}
Console.ReadLine();
En la consola veremos aparecer algo similar a esto:
Respuesta desde 66.249.87.104: bytes:32 tiempo=102 (Success)
Respuesta desde 66.249.87.104: bytes:32 tiempo=95 (Success)
Respuesta desde 66.249.87.104: bytes:32 tiempo=94 (Success)
Respuesta desde 66.249.87.104: bytes:32 tiempo=97 (Success)
Es muy fácil crear una aplicación clónica del "ping" de la línea de comandos de Windows, o mejor aún, crear una versión con Windows Forms que haga más cosas y sea más fácil de usar. ¡El que se anime que nos lo mande!
Esta clase Ping es super-útil para comprobar a intervalos regulares si un servidor está activo o no, o hacer un barrido de una red para descubrir qué nodos están activos.
Fecha de publicación: