.NET 2.0 dispone de un nuevo 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.

A mi me ha gustado, para hacer un primer ejemplo, la clase Ping, que permite (claro está) 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 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 me lo mande!

Esta clase Ping es super-útil para comprobar a intervalos regulares si unservidor está activo o no, o hacer un barrido de una red para descubrir qué nodos están activos.

Igual hago algún ejemplo más chulo con otras clases de este espacio de nombres y lo pongo en un post posterior.

Escrito por un humano, no por una IA