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 PROTOKOLU ICMP selhal, protože cílová IP adresa nemůže přijímat žádosti o odezvu ICMP nebo by se nikdy neměla objevit v poli cílové adresy žádného datagramu PROTOKOLU IP. Například volání Send a zadání IP adresy 000.0.0.0.0 vrátí tento stav.

BadHeader 11042

Požadavek na ozvěnu 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ými a cílovými počítači neexistuje platná trasa.

DestinationHostUnreachable 11003

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

DestinationNetworkUnreachable 11002

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

DestinationPortUnreachable 11005

Požadavek na odezvu PROTOKOLU ICMP selhal, protože port v 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ázán. Tato hodnota se vztahuje pouze na protokol IPv6.

DestinationProtocolUnreachable 11004

Požadavek na ozvěnu ICMP selhal, protože cílový počítač zadaný ve zprávě ozvěny PROTOKOLU ICMP není dostupný, protože nepodporuje protokol paketu. Tato hodnota se vztahuje pouze na protokol IPv4. Tato hodnota je popsána v dokumentu IETF RFC 1812 jako komunikace s administrativním zákazem.

DestinationScopeMismatch 11045

Požadavek na ozvěnu ICMP selhal, protože zdrojová adresa a cílová adresa zadané ve zprávě ozvěny ICMP nejsou ve stejném rozsahu. Příčinou je obvykle přesměrování paketu směrovačem pomocí rozhraní, které je mimo rozsah zdrojové adresy. Rozsahy adres (link-local, site-local a globální obor) určují, kde v síti je adresa platná.

DestinationUnreachable 11040

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

HardwareError 11008

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

IcmpError 11044

Požadavek na odezvu 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 ozvěnu ICMP selhal, protože paket obsahující požadavek je větší než maximální přenosová jednotka (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.

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 polí nebo nerozpoznanou možnost.

SourceQuench 11016

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

Success 0

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

TimedOut 11010

Odpověď na ozvěnu 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 SendAsync , které přebírají timeout parametr.

TimeExceeded 11041

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

TtlExpired 11013

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

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ě, kdy bylo přiděleno 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ů.

Unknown -1

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

UnrecognizedNextHeader 11043

Požadavek na ozvěnu ICMP selhal, protože pole Další záhlaví 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 ozvěny 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);
            }
        }
    }
}

Poznámky

Třída Ping používá hodnoty v tomto výčtu PingReply.Status k nastavení vlastnosti. Třída Ping vrátí PingReply objekty při volání nebo Ping.Send Ping.SendAsync metody, abyste zkontrolovali, jestli se můžete spojit s počítačem v síti.

Upozornění

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

Platí pro