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.NetworkInformation
spazio dei nomi .Net framework contiene una classe chiamata PingReply
che ha proprietà progettate per tradurre la ICMP
risposta 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 WinForms
per dimostrare come funziona il ping in c #. Fornendo un indirizzo IP valido textBox1
e facendo clic button1
, creiamo un'istanza della Ping
classe, una variabile locale PingReply
e una stringa per memorizzare l'indirizzo IP o URL. Assegniamo PingReply
il Send
metodo ping , quindi controlliamo se la richiesta è andata a buon fine confrontando lo stato della risposta con lo IPAddress.Success
stato della proprietà . Infine, estraiamo dalle PingReply
informazioni 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!!");
}
}
}
}