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í ozvěny protokolu 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
| Name | Hodnota | Description |
|---|---|---|
| Unknown | -1 | Žádost o odezvu PROTOKOLU ICMP selhala z neznámého důvodu. |
| Success | 0 | Žádost o odezvu PROTOKOLU ICMP byla úspěšná; Byla přijata odpověď odezvy PROTOKOLU ICMP. Když získáte tento stavový kód, ostatní PingReply vlastnosti obsahují platná data. |
| DestinationNetworkUnreachable | 11002 | Požadavek na odezvu PROTOKOLU ICMP selhal, protože síť, která obsahuje cílový počítač, není dostupná. |
| DestinationHostUnreachable | 11003 | Požadavek na odezvu PROTOKOLU ICMP selhal, protože cílový počítač není dostupný. |
| 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 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 popsaná v dokumentu IETF RFC 1812 jako komunikace, která je administrativní zakázána. |
| DestinationPortUnreachable | 11005 | Požadavek na odezvu PROTOKOLU ICMP selhal, protože port v cílovém počítači není k dispozici. |
| NoResources | 11006 | Požadavek na odezvu PROTOKOLU ICMP selhal kvůli nedostatečným síťovým prostředkům. |
| BadOption | 11007 | Požadavek na odezvu PROTOKOLU ICMP selhal, protože obsahuje neplatnou možnost. |
| HardwareError | 11008 | Požadavek na odezvu PROTOKOLU ICMP selhal kvůli chybě hardwaru. |
| PacketTooBig | 11009 | Požadavek na odezvu 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ášeného paketu. |
| TimedOut | 11010 | Odpověď odezvy ICMP nebyla přijata v přiděleném čase. Výchozí povolený čas pro odpovědi je 5 sekund. Tuto hodnotu můžete změnit pomocí Send metod, SendAsync které přebírají |
| BadRoute | 11012 | Požadavek na odezvu PROTOKOLU ICMP selhal, protože mezi zdrojovými a cílovými počítači neexistuje žádná platná trasa. |
| TtlExpired | 11013 | Požadavek na odezvu PROTOKOLU ICMP selhal, protože jeho hodnota TTL (Time to Live) dosáhla nuly, což způsobilo, že směrovací uzel (směrovač nebo brána) paket zahodí. |
| 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ě přidělení 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ů. |
| 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 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 úložného prostoru nebo když pakety dorazí do cíle příliš rychle, aby bylo možné zpracovat. |
| BadDestination | 11018 | Požadavek na odezvu PROTOKOLU 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 IP adres. Například volání Send a zadání IP adresy 000.0.0.0.0 vrátí tento stav. |
| DestinationUnreachable | 11040 | Požadavek na odezvu PROTOKOLU ICMP selhal, protože cílový počítač zadaný ve zprávě odezvy PROTOKOLU ICMP není dostupný; přesná příčina problému je neznámá. |
| TimeExceeded | 11041 | Požadavek na odezvu PROTOKOLU ICMP selhal, protože jeho hodnota TTL (Time to Live) dosáhla nuly, což způsobilo, že směrovací uzel (směrovač nebo brána) paket zahodí. |
| BadHeader | 11042 | Požadavek na odezvu PROTOKOLU ICMP selhal, protože hlavička je neplatná. |
| UnrecognizedNextHeader | 11043 | Požadavek na odezvu ICMP selhal, protože pole Další záhlaví neobsahuje rozpoznanou hodnotu. Pole Další hlavička označuje typ hlavičky rozšíření (pokud je k dispozici) nebo protokol nad vrstvou PROTOKOLU IP, například TCP nebo UDP. |
| IcmpError | 11044 | Požadavek na odezvu PROTOKOLU ICMP selhal kvůli chybě protokolu ICMP. |
| DestinationScopeMismatch | 11045 | Požadavek na odezvu PROTOKOLU ICMP selhal, protože zdrojová adresa a cílová adresa zadané ve zprávě odezvy ICMP nejsou ve stejném oboru. Příčinou je obvykle přesměrování paketu směrovačem pomocí rozhraní, které je mimo rozsah zdrojové adresy. Obory adres (místní propojení, místní lokalita a globální obor) určují, kde je v síti platná adresa. |
Příklady
Následující příklad kódu odešle zprávu odezvy ICMP a zkontroluje stav.
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 k nastavení PingReply.Status vlastnosti. Třída Ping vrací PingReply objekty při volání Ping.Send nebo Ping.SendAsync metody ke kontrole, zda se můžete spojit s počítačem přes síť.
Výstraha
Hodnoty Výčtu DestinationProhibited a DestinationProtocolUnreachable mají stejnou číselnou hodnotu. To je možné, protože DestinationProhibited platí pouze pro protokolY IPv6 a DestinationProtocolUnreachable pouze pro protokol IPv4.