Это удивительно необычно, когда вы начинаете программировать, но первое, на что вы должны обратить внимание, когда хотите что-то узнать, - это документация.
Методы Ping
Метод Ping.Send (IPAddress, Int32, Byte [], PingOptions)
Попытки отправить эхо-сообщение протокола управления сообщениями Интернета (ICMP) с указанным буфером данныхна компьютер с указанным IP-адресом и получить соответствующее сообщение ICMP-эхо-ответа от этого компьютера.Эта перегрузка позволяет указать значение времени ожидания для фрагментации операции и управления и значения времени жизни для пакета эхо-сообщений ICMP.
Класс PingOptions
Свойства
Ttl Получает или задает количество узлов маршрутизации, которые могут пересылать данные Ping до их отбрасывания.
Свойство PingOptions.Ttl
Получает или задает количество узлов маршрутизации, которые могут пересылать данные Ping перед их сбросом.
Примечания
Поскольку шлюзы и маршрутизаторы передают пакеты через сеть, они уменьшают текущее значение времени жизни (TTL), найденное в заголовке пакета.Если значение TTL достигает нуля, пакет считается недоставленным и отбрасывается.Эта опция полезна, если вы хотите проверить количество маршрутизаторов и шлюзов, используемых для передачи данных.
Пример
public static string PingHost(string host)
{
//string to hold our return messge
string returnMessage = string.Empty;
//IPAddress instance for holding the returned host
IPAddress address = GetIpFromHost(ref host);
//set the ping options, TTL 128
PingOptions pingOptions = new PingOptions(128, true);
//create a new ping instance
Ping ping = new Ping();
//32 byte buffer (create empty)
byte[] buffer = new byte[32];
//set the ping options, TTL 128
PingOptions pingOptions = new PingOptions(128, true);
PingReply pingReply = ping.Send(address, 1000, buffer, pingOptions);
if (!(pingReply == null))
{
switch (pingReply.Status)
{
case IPStatus.Success:
returnMessage = string.Format("Reply from {0}: bytes={1} time={2}ms TTL={3}",
pingReply.Address,
pingReply.Buffer.Length,
pingReply.RoundtripTime,
pingReply.Options.Ttl);
break;
case IPStatus.TimedOut:
returnMessage = "Connection has timed out...";
break;
default:
returnMessage = string.Format("Ping failed: {0}", pingReply.Status.ToString());
break;
}
}
else
returnMessage = "Connection failed for an unknown reason...";
...