L'utilizzo del ping in C # viene ottenuto utilizzando il metodo Ping.Send(System.Net.IPAddress), che esegue una richiesta di ping all'indirizzo IP o URL fornito (valido) e ottiene una risposta denominata pacchetto ICMP (Internet Control Message Protocol) . Il pacchetto contiene un'intestazione di 20 byte che contiene i dati di risposta dal server che ha ricevuto la richiesta ping. Lo System.Net.NetworkInformationspazio dei nomi .Net framework contiene una classe chiamata PingReplyche ha proprietà progettate per tradurre la ICMPrisposta e fornire informazioni utili sul server su cui è stato eseguito il ping come:
- IPStatus : ottiene l'indirizzo dell'host che invia la risposta echo ICMP (Internet Control Message Protocol).
- IPAddress : ottiene il numero di millisecondi necessari per inviare una richiesta di eco ICMP (Internet Control Message Protocol) e ricevere il messaggio di risposta echo ICMP corrispondente.
- RoundtripTime (System.Int64) : Ottiene le opzioni utilizzate per trasmettere la risposta a una richiesta echo ICMP (Internet Control Message Protocol).
- PingOptions (System.Byte []) : Ottiene il buffer dei dati ricevuti in un messaggio di risposta echo ICMP (Internet Control Message Protocol).
Il seguente è un semplice esempio che utilizza WinFormsper dimostrare come funziona il ping in c #. Fornendo un indirizzo IP valido textBox1e facendo clic button1, creiamo un'istanza della Pingclasse, una variabile locale PingReplye una stringa per memorizzare l'indirizzo IP o URL. Assegniamo PingReplyil Sendmetodo ping , quindi controlliamo se la richiesta è andata a buon fine confrontando lo stato della risposta con lo IPAddress.Successstato della proprietà . Infine, estraiamo dalle PingReplyinformazioni che abbiamo bisogno di mostrare all'utente, che è descritto sopra.
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!!");
}
}
}
}