IPStatus Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Сообщает о состоянии отправки сообщения об эхо-сообщении протокола ICMP (ICMP) на компьютер.
public enum class IPStatus
public enum IPStatus
type IPStatus =
Public Enum IPStatus
- Наследование
Поля
| Имя | Значение | Описание |
|---|---|---|
| Unknown | -1 | Не удалось выполнить запрос эхо ICMP по неизвестной причине. |
| Success | 0 | Запрос на эхо ICMP выполнен успешно; Был получен ответ на эхо ICMP. При получении этого кода состояния другие PingReply свойства содержат допустимые данные. |
| DestinationNetworkUnreachable | 11002 | Сбой запроса эхо ICMP, так как сеть, содержащая целевой компьютер, недоступна. |
| DestinationHostUnreachable | 11003 | Сбой запроса на эхо ICMP, так как конечный компьютер недоступен. |
| DestinationProhibited | 11004 | Сбой запроса эхо ICMPv6, так как контакт с конечным компьютером запрещен в административном порядке. Это значение применяется только к IPv6. |
| DestinationProtocolUnreachable | 11004 | Сбой запроса на эхо ICMP, так как конечный компьютер, указанный в сообщении эхо ICMP, недоступен, так как он не поддерживает протокол пакета. Это значение применяется только к IPv4. Это значение описано в IETF RFC 1812 как запрещено в административном режиме. |
| DestinationPortUnreachable | 11005 | Сбой запроса на эхо ICMP, так как порт на целевом компьютере недоступен. |
| NoResources | 11006 | Сбой запроса на эхо ICMP из-за нехватки сетевых ресурсов. |
| BadOption | 11007 | Сбой запроса на эхо ICMP, так как он содержит недопустимый параметр. |
| HardwareError | 11008 | Сбой запроса эхо ICMP из-за ошибки оборудования. |
| PacketTooBig | 11009 | Сбой запроса на эхо ICMP, так как пакет, содержащий запрос, больше максимальной единицы передачи (MTU) узла (маршрутизатора или шлюза), расположенного между источником и назначением. MTU определяет максимальный размер передаваемого пакета. |
| TimedOut | 11010 | Ответ на эхо ICMP не был получен в течение заданного времени. Время, допустимое по умолчанию для ответов, составляет 5 секунд. Это значение можно изменить с помощью Send методов, SendAsync которые принимают |
| BadRoute | 11012 | Сбой запроса на эхо ICMP, так как между исходными и конечными компьютерами нет допустимого маршрута. |
| TtlExpired | 11013 | Сбой запроса эхо ICMP, так как значение времени жизни (TTL) достигло нуля, что привело к отмене пакета узла пересылки (маршрутизатора или шлюза). |
| TtlReassemblyTimeExceeded | 11014 | Сбой запроса на эхо ICMP, так как пакет был разделен на фрагменты для передачи, и все фрагменты не были получены в течение времени, выделенного для повторной сборки. RFC 2460 указывает 60 секунд в качестве ограничения времени, в течение которого должны быть получены все фрагменты пакетов. |
| ParameterProblem | 11015 | Сбой запроса на эхо ICMP, так как при обработке заголовка пакета возникла проблема с узлом (маршрутизатором или шлюзом). Это состояние, если, например, заголовок содержит недопустимые данные поля или нераспознанный параметр. |
| SourceQuench | 11016 | Сбой запроса на эхо ICMP из-за того, что пакет был удален. Это происходит, когда выходная очередь исходного компьютера имеет недостаточно места в хранилище или когда пакеты прибывают в место назначения слишком быстро, чтобы обрабатываться. |
| BadDestination | 11018 | Сбой запроса на эхо ICMP, так как конечный IP-адрес не может получать запросы на эхо-уведомления ICMP или никогда не должен отображаться в поле целевого адреса любой ip-диаграммы данных. Например, вызов Send и указание IP-адреса "000.0.0.0" возвращает это состояние. |
| DestinationUnreachable | 11040 | Сбой запроса на эхо ICMP, так как конечный компьютер, указанный в сообщении эхо ICMP, недоступен; Точное причину проблемы неизвестно. |
| TimeExceeded | 11041 | Сбой запроса эхо ICMP, так как значение времени жизни (TTL) достигло нуля, что привело к отмене пакета узла пересылки (маршрутизатора или шлюза). |
| BadHeader | 11042 | Сбой запроса эхо ICMP, так как заголовок недопустим. |
| UnrecognizedNextHeader | 11043 | Сбой запроса на эхо ICMP, так как поле "Следующий заголовок" не содержит распознаваемое значение. Поле "Следующий заголовок" указывает тип заголовка расширения (если он присутствует) или протокол над уровнем IP, например TCP или UDP. |
| IcmpError | 11044 | Сбой запроса на эхо ICMP из-за ошибки протокола ICMP. |
| DestinationScopeMismatch | 11045 | Сбой запроса эхо ICMP, так как исходный адрес и адрес назначения, указанные в сообщении эхо ICMP, не находятся в той же области. Обычно это вызвано перенаправлением пакета маршрутизатором с помощью интерфейса, который находится за пределами области исходного адреса. Области адресов (ссылка на локальный, локальный сайт и глобальную область) определяют, где находится адрес в сети. |
Примеры
В следующем примере кода отправляется сообщение эхо ICMP и проверяется состояние.
using System;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;
namespace Examples.System.Net.NetworkInformation.PingTest
{
public class PingExample
{
// args[0] can be an IPaddress or host name.
public static void Main (string[] args)
{
Ping pingSender = new Ping ();
PingOptions options = new PingOptions ();
// Use the default Ttl value which is 128,
// but change the fragmentation behavior.
options.DontFragment = true;
// Create a buffer of 32 bytes of data to be transmitted.
string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes (data);
int timeout = 120;
PingReply reply = pingSender.Send (args[0], timeout, buffer, options);
if (reply.Status == IPStatus.Success)
{
Console.WriteLine ("Address: {0}", reply.Address.ToString ());
Console.WriteLine ("RoundTrip time: {0}", reply.RoundtripTime);
Console.WriteLine ("Time to live: {0}", reply.Options.Ttl);
Console.WriteLine ("Don't fragment: {0}", reply.Options.DontFragment);
Console.WriteLine ("Buffer size: {0}", reply.Buffer.Length);
}
}
}
}
open System.Net.NetworkInformation
open System.Text
// args[0] can be an IPaddress or host name.
[<EntryPoint>]
let main args =
let pingSender = new Ping()
// Use the default Ttl value which is 128,
// but change the fragmentation behavior.
let options = PingOptions()
options.DontFragment <- true
// Create a buffer of 32 bytes of data to be transmitted.
let data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
let buffer = Encoding.ASCII.GetBytes data
let timeout = 120
let reply: PingReply = pingSender.Send(args.[0], timeout, buffer, options)
match reply.Status with
| IPStatus.Success ->
printfn "Address: %O" reply.Address
printfn "RoundTrip time: %d" reply.RoundtripTime
printfn "Time to live: %d" reply.Options.Ttl
printfn "Don't fragment: %b" reply.Options.DontFragment
printfn "Buffer size: %d" reply.Buffer.Length
0
| _ ->
eprintfn "Error sending ping: %O" reply
eprintfn "Error was: %O" reply.Status
1
Комментарии
Класс Ping использует значения в этом перечислении для задания PingReply.Status свойства. Класс Ping возвращает PingReply объекты при вызове Ping.Send или Ping.SendAsync методах, чтобы проверить, можно ли связаться с компьютером по сети.
Предупреждение
Значения перечисления DestinationProhibited и DestinationProtocolUnreachable имеют одинаковое числовое значение. Это возможно, так как назначениеProhibited применяется только к IPv6 и DestinationProtocolUnreachable, применимо только к IPv4.