Поделиться через


IPStatus Перечисление

Определение

Сообщает о состоянии отправки сообщения об эхо-сообщении протокола ICMP (ICMP) на компьютер.

public enum class IPStatus
public enum IPStatus
type IPStatus = 
Public Enum IPStatus
Наследование
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 которые принимают timeout параметр.

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.

Применяется к