.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.
Para hacer un primer ejemplo con ella usaremos la clase Ping, que permite (obviamente) 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.
' Versión VB .Net Imports System.Net Imports System.Net.NetworkInformation Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim i As Integer Dim eco As New System.Net.NetworkInformation.Ping Dim res As System.Net.NetworkInformation.PingReply Dim ip As IPAddress ' Dirección de Google ip = IPAddress.Parse("66.249.87.104") For i = 1 To 4 res = eco.Send(ip) Console.Write("Respuesta desde " & res.Address.ToString & ": bytes:" & _ res.Buffer.Length & " tiempo=" & res.RoundtripTime & " (" & _ res.Status.ToString & ")" & vbCrLf) Next End Sub End Class
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 y lo publicaremos!
Esta clase Ping es muy útil para comprobar a intervalos regulares si un servidor está funcionando o no, o hacer un barrido de una red para descubrir qué nodos están activos.
Publicado en Campus MVP