IPStatus Wyliczenie

Definicja

Zgłasza stan wysyłania komunikatu echa protokołu ICMP (Internet Control Message Protocol) do komputera.

public enum class IPStatus
public enum IPStatus
type IPStatus = 
Public Enum IPStatus
Dziedziczenie
IPStatus

Pola

BadDestination 11018

Żądanie echa ICMP nie powiodło się, ponieważ docelowy adres IP nie może odbierać żądań echa ICMP lub nigdy nie powinien pojawiać się w polu adresu docelowego żadnego datagramu IP. Na przykład wywołanie Send i określenie adresu IP "000.0.0.0" zwraca ten stan.

BadHeader 11042

Żądanie echa ICMP nie powiodło się, ponieważ nagłówek jest nieprawidłowy.

BadOption 11007

Żądanie echa ICMP nie powiodło się, ponieważ zawiera nieprawidłową opcję.

BadRoute 11012

Żądanie echa ICMP nie powiodło się, ponieważ między komputerami źródłowymi i docelowymi nie istnieje prawidłowa trasa.

DestinationHostUnreachable 11003

Żądanie echa ICMP nie powiodło się, ponieważ komputer docelowy nie jest osiągalny.

DestinationNetworkUnreachable 11002

Żądanie echa ICMP nie powiodło się, ponieważ sieć zawierająca komputer docelowy nie jest osiągalny.

DestinationPortUnreachable 11005

Żądanie echa ICMP nie powiodło się, ponieważ port na komputerze docelowym jest niedostępny.

DestinationProhibited 11004

Żądanie echa ICMPv6 nie powiodło się, ponieważ kontakt z komputerem docelowym jest zabroniony administracyjnie. Ta wartość dotyczy tylko protokołu IPv6.

DestinationProtocolUnreachable 11004

Żądanie echa protokołu ICMP nie powiodło się, ponieważ komputer docelowy określony w komunikacie echa ICMP nie jest osiągalny, ponieważ nie obsługuje protokołu pakietu. Ta wartość dotyczy tylko protokołu IPv4. Ta wartość jest opisana w IETF RFC 1812 jako Komunikacja administracyjnie zabroniona.

DestinationScopeMismatch 11045

Żądanie echa ICMP nie powiodło się, ponieważ adres źródłowy i adres docelowy określony w komunikacie echa ICMP nie znajdują się w tym samym zakresie. Jest to zwykle spowodowane przez router przekazujący pakiet przy użyciu interfejsu, który znajduje się poza zakresem adresu źródłowego. Zakresy adresów (link-local, lokacja-lokalna i zakres globalny) określają, gdzie w sieci jest prawidłowy adres.

DestinationUnreachable 11040

Żądanie echa ICMP nie powiodło się, ponieważ komputer docelowy określony w komunikacie echa ICMP jest niedostępny; dokładna przyczyna problemu jest nieznana.

HardwareError 11008

Żądanie echa ICMP nie powiodło się z powodu błędu sprzętowego.

IcmpError 11044

Żądanie echa ICMP nie powiodło się z powodu błędu protokołu ICMP.

NoResources 11006

Żądanie echa ICMP nie powiodło się z powodu niewystarczającej ilości zasobów sieciowych.

PacketTooBig 11009

Żądanie echa ICMP nie powiodło się, ponieważ pakiet zawierający żądanie jest większy niż maksymalna jednostka transmisji (MTU) węzła (routera lub bramy) znajdującego się między źródłem a miejscem docelowym. Jednostka MTU definiuje maksymalny rozmiar pakietu przesyłanego.

ParameterProblem 11015

Żądanie echa ICMP nie powiodło się, ponieważ węzeł (router lub brama) napotkał problemy podczas przetwarzania nagłówka pakietu. Jest to stan, jeśli na przykład nagłówek zawiera nieprawidłowe dane pola lub nierozpoznaną opcję.

SourceQuench 11016

Żądanie echa ICMP nie powiodło się, ponieważ pakiet został odrzucony. Dzieje się tak, gdy kolejka wyjściowa komputera źródłowego ma niewystarczającą ilość miejsca do magazynowania lub gdy pakiety docierają do miejsca docelowego zbyt szybko, aby zostać przetworzone.

Success 0

Żądanie echa ICMP powiodło się; odebrano odpowiedź echa ICMP. Po otrzymaniu tego kodu stanu pozostałe PingReply właściwości zawierają prawidłowe dane.

TimedOut 11010

ICMP echo Reply nie został odebrany w wyznaczonym czasie. Domyślny czas dozwolony dla odpowiedzi wynosi 5 sekund. Tę wartość można zmienić przy użyciu Send metod lub SendAsync , które przyjmują timeout parametr .

TimeExceeded 11041

Żądanie echa ICMP nie powiodło się, ponieważ jego wartość Czasu wygaśnięcia (TTL) osiągnęła zero, powodując odrzucenie pakietu przez węzeł przekazujący (router lub bramę).

TtlExpired 11013

Żądanie echa ICMP nie powiodło się, ponieważ jego wartość Czasu wygaśnięcia (TTL) osiągnęła zero, powodując odrzucenie pakietu przez węzeł przekazujący (router lub bramę).

TtlReassemblyTimeExceeded 11014

Żądanie echa ICMP nie powiodło się, ponieważ pakiet został podzielony na fragmenty transmisji, a wszystkie fragmenty nie zostały odebrane w czasie przydzielonym do ponownego ponownego przesyłania. RFC 2460 określa 60 sekund jako limit czasu, w którym muszą zostać odebrane wszystkie fragmenty pakietów.

Unknown -1

Żądanie echa ICMP nie powiodło się z nieznanego powodu.

UnrecognizedNextHeader 11043

Żądanie echa ICMP nie powiodło się, ponieważ pole Dalej nagłówka nie zawiera rozpoznanej wartości. Pole Następny nagłówek wskazuje typ nagłówka rozszerzenia (jeśli istnieje) lub protokół powyżej warstwy IP, na przykład TCP lub UDP.

Przykłady

Poniższy przykład kodu wysyła komunikat echa ICMP i sprawdza stan.

#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

Uwagi

Klasa Ping używa wartości w tym wyliczenie, aby ustawić PingReply.Status właściwość. Klasa Ping zwraca PingReply obiekty podczas wywoływania Ping.Send metod lub Ping.SendAsync w celu sprawdzenia, czy można uzyskać dostęp do komputera w sieci.

Ostrzeżenie

Wartości wyliczenia DestinationProhibited i DestinationProtocolUnreachable mają taką samą wartość liczbową. Jest to możliwe, ponieważ element DestinationProhibited dotyczy tylko protokołów IPv6 i DestinationProtocolUnreachable dotyczy tylko protokołu IPv4.

Dotyczy