Sdílet prostřednictvím


IPStatus Výčet

Definice

Hlásí stav odeslání ozvěny protokolu ICMP (Internet Control Message Protocol) do počítače.

public enum class IPStatus
public enum IPStatus
type IPStatus = 
Public Enum IPStatus
Dědičnost
IPStatus

Pole

Name Hodnota Description
Unknown -1

Žádost o odezvu PROTOKOLU ICMP selhala z neznámého důvodu.

Success 0

Žádost o odezvu PROTOKOLU ICMP byla úspěšná; Byla přijata odpověď odezvy PROTOKOLU ICMP. Když získáte tento stavový kód, ostatní PingReply vlastnosti obsahují platná data.

DestinationNetworkUnreachable 11002

Požadavek na odezvu PROTOKOLU ICMP selhal, protože síť, která obsahuje cílový počítač, není dostupná.

DestinationHostUnreachable 11003

Požadavek na odezvu PROTOKOLU ICMP selhal, protože cílový počítač není dostupný.

DestinationProhibited 11004

Požadavek na odezvu ICMPv6 selhal, protože kontakt s cílovým počítačem je administrativně zakázán. Tato hodnota se vztahuje pouze na protokol IPv6.

DestinationProtocolUnreachable 11004

Požadavek na odezvu PROTOKOLU ICMP selhal, protože cílový počítač zadaný ve zprávě odezvy PROTOKOLU ICMP není dostupný, protože nepodporuje protokol paketu. Tato hodnota platí jenom pro protokol IPv4. Tato hodnota je popsaná v dokumentu IETF RFC 1812 jako komunikace, která je administrativní zakázána.

DestinationPortUnreachable 11005

Požadavek na odezvu PROTOKOLU ICMP selhal, protože port v cílovém počítači není k dispozici.

NoResources 11006

Požadavek na odezvu PROTOKOLU ICMP selhal kvůli nedostatečným síťovým prostředkům.

BadOption 11007

Požadavek na odezvu PROTOKOLU ICMP selhal, protože obsahuje neplatnou možnost.

HardwareError 11008

Požadavek na odezvu PROTOKOLU ICMP selhal kvůli chybě hardwaru.

PacketTooBig 11009

Požadavek na odezvu ICMP selhal, protože paket obsahující požadavek je větší než maximální jednotka přenosu (MTU) uzlu (směrovače nebo brány) umístěného mezi zdrojem a cílem. MTU definuje maximální velikost přenášeného paketu.

TimedOut 11010

Odpověď odezvy ICMP nebyla přijata v přiděleném čase. Výchozí povolený čas pro odpovědi je 5 sekund. Tuto hodnotu můžete změnit pomocí Send metod, SendAsync které přebírají timeout parametr.

BadRoute 11012

Požadavek na odezvu PROTOKOLU ICMP selhal, protože mezi zdrojovými a cílovými počítači neexistuje žádná platná trasa.

TtlExpired 11013

Požadavek na odezvu PROTOKOLU ICMP selhal, protože jeho hodnota TTL (Time to Live) dosáhla nuly, což způsobilo, že směrovací uzel (směrovač nebo brána) paket zahodí.

TtlReassemblyTimeExceeded 11014

Požadavek na odezvu PROTOKOLU ICMP selhal, protože paket byl rozdělen do fragmentů pro přenos a všechny fragmenty nebyly přijaty v době přidělení pro opětovné sestavení. RFC 2460 určuje 60 sekund jako časový limit, ve kterém musí být přijaty všechny fragmenty paketů.

ParameterProblem 11015

Požadavek na odezvu PROTOKOLU ICMP selhal, protože při zpracování hlavičky paketu došlo k problémům s uzlem (směrovačem nebo bránou). Toto je stav, pokud například záhlaví obsahuje neplatná data pole nebo nerozpoznanou možnost.

SourceQuench 11016

Požadavek na odezvu PROTOKOLU ICMP selhal, protože paket byl zahozen. K tomu dochází v případě, že výstupní fronta zdrojového počítače nemá dostatek úložného prostoru nebo když pakety dorazí do cíle příliš rychle, aby bylo možné zpracovat.

BadDestination 11018

Požadavek na odezvu PROTOKOLU ICMP selhal, protože cílová IP adresa nemůže přijímat požadavky na odezvu PROTOKOLU ICMP nebo by se nikdy neměla zobrazovat v poli cílové adresy žádného datagramu IP adres. Například volání Send a zadání IP adresy 000.0.0.0.0 vrátí tento stav.

DestinationUnreachable 11040

Požadavek na odezvu PROTOKOLU ICMP selhal, protože cílový počítač zadaný ve zprávě odezvy PROTOKOLU ICMP není dostupný; přesná příčina problému je neznámá.

TimeExceeded 11041

Požadavek na odezvu PROTOKOLU ICMP selhal, protože jeho hodnota TTL (Time to Live) dosáhla nuly, což způsobilo, že směrovací uzel (směrovač nebo brána) paket zahodí.

BadHeader 11042

Požadavek na odezvu PROTOKOLU ICMP selhal, protože hlavička je neplatná.

UnrecognizedNextHeader 11043

Požadavek na odezvu ICMP selhal, protože pole Další záhlaví neobsahuje rozpoznanou hodnotu. Pole Další hlavička označuje typ hlavičky rozšíření (pokud je k dispozici) nebo protokol nad vrstvou PROTOKOLU IP, například TCP nebo UDP.

IcmpError 11044

Požadavek na odezvu PROTOKOLU ICMP selhal kvůli chybě protokolu ICMP.

DestinationScopeMismatch 11045

Požadavek na odezvu PROTOKOLU ICMP selhal, protože zdrojová adresa a cílová adresa zadané ve zprávě odezvy ICMP nejsou ve stejném oboru. Příčinou je obvykle přesměrování paketu směrovačem pomocí rozhraní, které je mimo rozsah zdrojové adresy. Obory adres (místní propojení, místní lokalita a globální obor) určují, kde je v síti platná adresa.

Příklady

Následující příklad kódu odešle zprávu odezvy ICMP a zkontroluje stav.

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

Poznámky

Třída Ping používá hodnoty v tomto výčtu k nastavení PingReply.Status vlastnosti. Třída Ping vrací PingReply objekty při volání Ping.Send nebo Ping.SendAsync metody ke kontrole, zda se můžete spojit s počítačem přes síť.

Výstraha

Hodnoty Výčtu DestinationProhibited a DestinationProtocolUnreachable mají stejnou číselnou hodnotu. To je možné, protože DestinationProhibited platí pouze pro protokolY IPv6 a DestinationProtocolUnreachable pouze pro protokol IPv4.

Platí pro