IPStatus Výčet
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
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í |
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.