IPStatus Wyliczenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
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ących 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 za mało miejsca do magazynowania lub gdy pakiety docierają do miejsca docelowego zbyt szybko, aby zostały 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ą |
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 rozsył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 nieznanej przyczyny. |
UnrecognizedNextHeader | 11043 | Żądanie echa ICMP nie powiodło się, ponieważ pole Następny nagłówek 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ą tę samą wartość liczbową. Jest to możliwe, ponieważ element DestinationProhibited ma zastosowanie tylko do protokołów IPv6 i DestinationProtocolUnreachable tylko do protokołu IPv4.