IPStatus Enum

Definition

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
IPStatus

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 timeout parameter.

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.

Gäller för