Використання ping в C # досягається за допомогою методу Ping.Send(System.Net.IPAddress)
, який запускає запит ping на надану (дійсну) IP-адресу або URL-адресу і отримує відповідь, яка називається пакетом протоколу ICMP (Internet Control Message Protocol) . Пакет містить заголовок розміром 20 байт, який містить дані відповіді від сервера, який отримав запит ping. System.Net.NetworkInformation
Простір імен фреймворка .Net містить клас, який називається PingReply
властивостями, призначеними для перекладу ICMP
відповіді та надання корисної інформації про перевірений сервером, наприклад:
- IPStatus : Отримує адресу хоста, який надсилає відповідь ехо-сигналу за протоколом ICMP.
- IPAddress : Отримує кількість мілісекунд, необхідних для надсилання запиту ехо-сигналу протоколу керування Інтернетом (ICMP) та отримання відповідного повідомлення-відповіді ехо-сигналу ICMP.
- RoundtripTime (System.Int64) : Отримує параметри, що використовуються для передачі відповіді на запит відлуння протоколу ICMP.
- PingOptions (System.Byte []) : Отримує буфер даних, отриманих у повідомленні ехо-відповіді протоколу ICMP (Internet Control Message Protocol).
Далі наведено простий приклад, WinForms
який демонструє, як ping працює в c #. Надаючи дійсну IP-адресу textBox1
та натискаючи button1
, ми створюємо екземпляр Ping
класу, локальну змінну PingReply
та рядок для зберігання IP-адреси або URL-адреси. Ми призначаємо метод PingReply
ping Send
, а потім перевіряємо, чи був запит успішним, порівнюючи статус відповіді зі IPAddress.Success
статусом властивості . Нарешті, ми витягуємо з PingReply
інформації, яку нам потрібно відображати для користувача, яка описана вище.
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!!");
}
}
}
}