IPStatus Výčet

Definice

Hlásí stav odeslání zprávy 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

BadDestination 11018

Požadavek na odezvu 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 PROTOKOLU IP. Například volání Send a zadání IP adresy "000.0.0.0" vrátí tento stav.

BadHeader 11042

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

BadOption 11007

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

BadRoute 11012

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

DestinationHostUnreachable 11003

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

DestinationNetworkUnreachable 11002

Požadavek na odezvu protokolu ICMP selhal, protože síť obsahující cílový počítač není dosažitelná.

DestinationPortUnreachable 11005

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

DestinationProhibited 11004

Požadavek na odezvu ICMPv6 selhal, protože kontakt s cílovým počítačem je administrativně zakázaný. Tato hodnota platí jenom pro 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 popsána v dokumentu IETF RFC 1812 jako Komunikace administrativně zakázaná.

DestinationScopeMismatch 11045

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

DestinationUnreachable 11040

Požadavek na odezvu protokolu ICMP se nezdařil, protože cílový počítač, který je zadán ve zprávě odezvy ICMP, není dostupný. přesná příčina problému není známa.

HardwareError 11008

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

IcmpError 11044

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

NoResources 11006

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

PacketTooBig 11009

Požadavek na odezvu PROTOKOLU 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ášetelného paketu.

ParameterProblem 11015

Požadavek na odezvu PROTOKOLU ICMP selhal, protože uzel (směrovač nebo brána) narazil na problémy při zpracování hlavičky paketu. Toto je stav, pokud například hlavička 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 místa v úložišti nebo když pakety dorazí do cíle příliš rychle, aby se daly zpracovat.

Success 0

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

TimedOut 11010

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

TimeExceeded 11041

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

TtlExpired 11013

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

TtlReassemblyTimeExceeded 11014

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

Unknown -1

Požadavek na odezvu PROTOKOLU ICMP z neznámého důvodu selhal.

UnrecognizedNextHeader 11043

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

Příklady

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

#using <System.dll>

using namespace System;
using namespace System::Net;
using namespace System::Net::NetworkInformation;
using namespace System::Text;

// args[1] can be an IPaddress or host name.
int main()
{
   array<String^>^args = Environment::GetCommandLineArgs();
   
   Ping ^ pingSender = gcnew Ping;
   PingOptions ^ options = gcnew 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";
   array<Byte>^buffer = Encoding::ASCII->GetBytes( data );
   int timeout = 120;
   PingReply ^ reply = pingSender->Send( args[ 1 ], 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 );
   }

   
}
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 PingReply.Status k nastavení vlastnosti. Třída Ping vrací PingReply objekty při volání Ping.Send metody nebo Ping.SendAsync ke kontrole, zda se můžete připojit k počítači přes síť.

Upozornění

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

Platí pro