Использование ping в C # достигается за счет использования метода Ping.Send(System.Net.IPAddress)
, который запускает запрос ping на предоставленный (действительный) IP-адрес или URL и получает ответ, который называется пакетом протокола управляющих сообщений Интернета (ICMP) . Пакет содержит заголовок из 20 байтов, который содержит данные ответа от сервера, получившего запрос проверки связи. Пространство System.Net.NetworkInformation
имен .Net framework содержит класс с именем, PingReply
который имеет свойства, предназначенные для преобразования ICMP
ответа и доставки полезной информации о проверяемом сервере, например:
- IPStatus : получает адрес узла, который отправляет эхо-ответ протокола управляющих сообщений Интернета (ICMP).
- IPAddress : получает количество миллисекунд, затраченных на отправку эхо-запроса протокола управляющих сообщений Интернета (ICMP) и получение соответствующего сообщения эхо-ответа ICMP.
- RoundtripTime (System.Int64) : получает параметры, используемые для передачи ответа на эхо-запрос протокола управляющих сообщений Интернета (ICMP).
- PingOptions (System.Byte []) : получает буфер данных, полученных в ответном эхо-сообщении протокола управляющих сообщений Интернета (ICMP).
Ниже приведен простой пример, 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!!");
}
}
}
}