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 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í |
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.