Como hacer ping a servidores con .NET

Visual Studio Me he encontrado con el problema de tener controlada la latencia de las maquinas que tengo, y me he encontrado que el Framework NET 2.0 dispone de un espacio de nombres pensado específicamente para crear aplicaciones de diagnóstico de redes. Este espacio se llama 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. En la versión anterior de la plataforma había que hacerlo “a pelo” y era bastante complicado. Ahora es sencillísimo.

Por ejemplo, el siguiente código realiza cuatro pings a una direccion de ip (sustituir 000.000.000.000 por la direccion ip que queráis monitorizar) y devuelve los resultados de cada petición.

using System.Net;
using System.Net.NetworkInformation;
IPAddress ip = IPAddress.Parse("000.000.000.000");
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 000.000.000.000: bytes:32 tiempo=101 (Success)
Respuesta desde 000.000.000.000: bytes:32 tiempo=92 (Success)
Respuesta desde 000.000.000.000: bytes:32 tiempo=91 (Success)
Respuesta desde 000.000.000.000: bytes:32 tiempo=05 (Success)

La clase Ping es muy ú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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *