El uso de ping en C # se logra mediante el método Ping.Send(System.Net.IPAddress)
, que ejecuta una solicitud de ping a la dirección IP o URL proporcionada (válida) y obtiene una respuesta que se denomina paquete de Protocolo de mensajes de control de Internet (ICMP) . El paquete contiene un encabezado de 20 bytes que contiene los datos de respuesta del servidor que recibió la solicitud de ping. El System.Net.NetworkInformation
espacio de nombres de .Net framework contiene una clase llamada PingReply
que tiene propiedades diseñadas para traducir la ICMP
respuesta y brindar información útil sobre el servidor al que se hizo ping, como:
- IPStatus : Obtiene la dirección del host que envía la respuesta de eco del Protocolo de mensajes de control de Internet (ICMP).
- IPAddress : Obtiene el número de milisegundos necesarios para enviar una solicitud de eco del Protocolo de mensajes de control de Internet (ICMP) y recibir el mensaje de respuesta de eco ICMP correspondiente.
- RoundtripTime (System.Int64) : Obtiene las opciones utilizadas para transmitir la respuesta a una solicitud de eco del Protocolo de mensajes de control de Internet (ICMP).
- PingOptions (System.Byte []) : Obtiene el búfer de datos recibidos en un mensaje de respuesta de eco del Protocolo de mensajes de control de Internet (ICMP).
El siguiente es un ejemplo simple que se usa WinForms
para demostrar cómo funciona el ping en c #. Al proporcionar una dirección IP válida textBox1
y hacer clic button1
, estamos creando una instancia de la Ping
clase, una variable local PingReply
y una cadena para almacenar la dirección IP o URL. Asignamos PingReply
al Send
método de ping , luego inspeccionamos si la solicitud fue exitosa comparando el estado de la respuesta con el IPAddress.Success
estado de la propiedad . Finalmente, extraemos de PingReply
la información que necesitamos mostrar al usuario, que se describe anteriormente.
using System;
using System.Net.NetworkInformation;
using System.Windows.Forms;
namespace PingTest1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Ping p = new Ping();
PingReply r;
string s;
s = textBox1.Text;
r = p.Send(s);
if (r.Status == IPStatus.Success)
{
lblResult.Text = "Ping to " + s.ToString() + "[" + r.Address.ToString() + "]" + " Successful"
+ " Response delay = " + r.RoundtripTime.ToString() + " ms" + "\n";
}
}
private void textBox1_Validated(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(textBox1.Text) || textBox1.Text == "")
{
MessageBox.Show("Please use valid IP or web address!!");
}
}
}
}