L'utilisation de ping en C # est obtenue à l'aide de la méthode Ping.Send(System.Net.IPAddress), qui exécute une requête ping à l'adresse IP ou à l'URL fournie (valide) et obtient une réponse appelée paquet ICMP (Internet Control Message Protocol) . Le paquet contient un en-tête de 20 octets qui contient les données de réponse du serveur qui a reçu la requête ping. L' System.Net.NetworkInformationespace de noms .Net Framework contient une classe appelée PingReplyqui a des propriétés conçues pour traduire la ICMPréponse et fournir des informations utiles sur le serveur ping, telles que:
- IPStatus : obtient l'adresse de l'hôte qui envoie la réponse d'écho ICMP (Internet Control Message Protocol).
- IPAddress : obtient le nombre de millisecondes nécessaires pour envoyer une demande d'écho ICMP (Internet Control Message Protocol) et recevoir le message de réponse d'écho ICMP correspondant.
- RoundtripTime (System.Int64) : obtient les options utilisées pour transmettre la réponse à une demande d'écho ICMP (Internet Control Message Protocol).
- PingOptions (System.Byte []) : Obtient la mémoire tampon des données reçues dans un message de réponse d'écho ICMP (Internet Control Message Protocol).
Voici un exemple simple d'utilisation WinFormspour illustrer le fonctionnement de ping dans c #. En fournissant une adresse IP valide textBox1et en cliquant button1, nous créons une instance de la Pingclasse, une variable locale PingReplyet une chaîne pour stocker l'adresse IP ou URL. Nous attribuons PingReplyà la Sendméthode ping , puis nous inspectons si la requête a abouti en comparant l'état de la réponse à l' IPAddress.Successétat de la propriété . Enfin, nous extrayons PingReplyles informations que nous devons afficher pour l'utilisateur, qui sont décrites ci-dessus.
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!!");
}
}
}
}