IPStatus Enum
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Rapporterar status för att skicka ett ICMP-ekomeddelande (Internet Control Message Protocol) till en dator.
public enum class IPStatus
public enum IPStatus
type IPStatus =
Public Enum IPStatus
- Arv
Fält
| Name | Värde | Description |
|---|---|---|
| Unknown | -1 | ICMP-ekobegäran misslyckades av okänd anledning. |
| Success | 0 | ICMP-ekobegäran lyckades. ett ICMP-ekosvar togs emot. När du får den här statuskoden innehåller de andra PingReply egenskaperna giltiga data. |
| DestinationNetworkUnreachable | 11002 | ICMP-ekobegäran misslyckades eftersom nätverket som innehåller måldatorn inte kan nås. |
| DestinationHostUnreachable | 11003 | ICMP-ekobegäran misslyckades eftersom måldatorn inte kan nås. |
| DestinationProhibited | 11004 | ICMPv6-ekobegäran misslyckades eftersom kontakt med måldatorn är administrativt förbjuden. Det här värdet gäller endast för IPv6. |
| DestinationProtocolUnreachable | 11004 | ICMP-ekobegäran misslyckades eftersom måldatorn som anges i ett ICMP-ekomeddelande inte kan nås, eftersom den inte stöder paketets protokoll. Det här värdet gäller endast för IPv4. Det här värdet beskrivs i IETF RFC 1812 som kommunikation administrativt förbjuden. |
| DestinationPortUnreachable | 11005 | ICMP-ekobegäran misslyckades eftersom porten på måldatorn inte är tillgänglig. |
| NoResources | 11006 | ICMP-ekobegäran misslyckades på grund av otillräckliga nätverksresurser. |
| BadOption | 11007 | ICMP-ekobegäran misslyckades eftersom den innehåller ett ogiltigt alternativ. |
| HardwareError | 11008 | ICMP-ekobegäran misslyckades på grund av ett maskinvarufel. |
| PacketTooBig | 11009 | ICMP-ekobegäran misslyckades eftersom paketet som innehåller begäran är större än den maximala överföringsenheten (MTU) för en nod (router eller gateway) som finns mellan källan och målet. MTU definierar den maximala storleken på ett överföringsbart paket. |
| TimedOut | 11010 | ICMP-ekosvaret mottogs inte inom den tilldelade tiden. Standardtiden för svar är 5 sekunder. Du kan ändra det här värdet med hjälp av metoderna Send eller SendAsync som använder en |
| BadRoute | 11012 | ICMP-ekobegäran misslyckades eftersom det inte finns någon giltig väg mellan käll- och måldatorerna. |
| TtlExpired | 11013 | ICMP-ekobegäran misslyckades eftersom TTL-värdet (Time to Live) nådde noll, vilket gjorde att vidarebefordrande noden (routern eller gatewayen) tog bort paketet. |
| TtlReassemblyTimeExceeded | 11014 | ICMP-ekobegäran misslyckades eftersom paketet delades upp i fragment för överföring och alla fragment inte togs emot inom den tid som tilldelades för återmontering. RFC 2460 anger 60 sekunder som den tidsgräns inom vilken alla paketfragment måste tas emot. |
| ParameterProblem | 11015 | ICMP-ekobegäran misslyckades eftersom en nod (router eller gateway) stötte på problem när pakethuvudet bearbetas. Det här är statusen om till exempel rubriken innehåller ogiltiga fältdata eller ett okänt alternativ. |
| SourceQuench | 11016 | ICMP-ekobegäran misslyckades eftersom paketet togs bort. Detta inträffar när källdatorns utdatakö inte har tillräckligt med lagringsutrymme, eller när paketen kommer till målet för snabbt för att bearbetas. |
| BadDestination | 11018 | ICMP-ekobegäran misslyckades eftersom mål-IP-adressen inte kan ta emot ICMP-ekobegäranden eller aldrig ska visas i måladressfältet för ip-datagram. Om du till exempel anropar Send och anger IP-adressen "000.0.0.0" returneras den här statusen. |
| DestinationUnreachable | 11040 | ICMP-ekobegäran misslyckades eftersom måldatorn som anges i ett ICMP-ekomeddelande inte kan nås. den exakta orsaken till problemet är okänd. |
| TimeExceeded | 11041 | ICMP-ekobegäran misslyckades eftersom TTL-värdet (Time to Live) nådde noll, vilket gjorde att vidarebefordrande noden (routern eller gatewayen) tog bort paketet. |
| BadHeader | 11042 | ICMP-ekobegäran misslyckades eftersom huvudet är ogiltigt. |
| UnrecognizedNextHeader | 11043 | ICMP-ekobegäran misslyckades eftersom fältet Nästa huvud inte innehåller något igenkänt värde. Fältet Nästa sidhuvud anger typ av tilläggshuvud (om det finns) eller protokollet ovanför IP-lagret, till exempel TCP eller UDP. |
| IcmpError | 11044 | ICMP-ekobegäran misslyckades på grund av ett ICMP-protokollfel. |
| DestinationScopeMismatch | 11045 | ICMP-ekobegäran misslyckades eftersom källadressen och måladressen som anges i ett ICMP-ekomeddelande inte finns i samma omfång. Detta orsakas vanligtvis av att en router vidarebefordrar ett paket med ett gränssnitt som ligger utanför källadressens omfång. Adressomfattningar (länklokalt, platslokalt och globalt omfång) avgör var i nätverket en adress är giltig. |
Exempel
I följande kodexempel skickas ett ICMP-ekomeddelande och statusen kontrolleras.
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
Kommentarer
Klassen Ping använder värdena i den här uppräkningen för att ange PingReply.Status egenskapen. Klassen Ping returnerar PingReply objekt när du anropar Ping.Send metoderna eller Ping.SendAsync för att kontrollera om du kan nå en dator i nätverket.
Varning
Uppräkningsvärdena DestinationProhibited och DestinationProtocolUnreachable har samma numeriska värde. Detta är möjligt eftersom DestinationProhibited endast gäller för IPv6 och DestinationProtocolUnreachable gäller endast för IPv4.