IPStatus Enumeración

Definición

Notifica el estado del envío de un mensaje de eco ICMP (Protocolo de mensajes de control de Internet) a un equipo.

public enum class IPStatus
public enum IPStatus
type IPStatus = 
Public Enum IPStatus
Herencia
IPStatus

Campos

BadDestination 11018

Se ha producido un error en la solicitud de eco ICMP porque la dirección IP de destino no puede recibir solicitudes de eco ICMP o no debe aparecer nunca en el campo de dirección de destino de ningún datagrama IP. Por ejemplo, cuando se llama a Send y se especifica la dirección IP "000.0.0.0", se devuelve este estado.

BadHeader 11042

Se ha producido un error en la solicitud de eco ICMP porque el encabezado no es válido.

BadOption 11007

Se ha producido un error en la solicitud de eco ICMP porque contiene una opción que no es válida.

BadRoute 11012

Se ha producido un error en la solicitud de eco ICMP porque no hay ninguna ruta válida entre los equipos de origen y de destino.

DestinationHostUnreachable 11003

Se ha producido un error en la solicitud de eco ICMP porque no se ha podido alcanzar el equipo de destino.

DestinationNetworkUnreachable 11002

Se ha producido un error en la solicitud de eco ICMP porque no se ha podido alcanzar la red que contiene el equipo de destino.

DestinationPortUnreachable 11005

Se ha producido un error en la solicitud de eco ICMP porque el puerto del equipo de destino no está disponible.

DestinationProhibited 11004

Se ha producido un error en la solicitud de eco ICMPv6 porque el contacto con el equipo de destino está prohibido desde el punto de vista administrativo. Este valor solo se aplica a IPv6.

DestinationProtocolUnreachable 11004

Se ha producido un error en la solicitud de eco ICMP porque no se ha podido alcanzar el equipo de destino especificado en un mensaje de eco ICMP debido a que no admite el protocolo del paquete. Este valor solo se aplica a IPv4. Este valor se describe en IETF RFC 1812 como una comunicación prohibida administrativamente.

DestinationScopeMismatch 11045

Se ha producido un error en la solicitud de eco ICMP porque la dirección de origen y de destino especificadas en un mensaje de eco ICMP no se encuentran en el mismo ámbito. Esto último suele producirse porque un enrutador que reenvía un paquete utiliza una interfaz que se encuentra fuera del ámbito de la dirección de origen. Los ámbitos de las direcciones (ámbito local de vínculo, ámbito local de sitio y ámbito global) determinan los lugares de la red en los que una dirección es válida.

DestinationUnreachable 11040

Se ha producido un error en la solicitud de eco ICMP porque no se ha podido alcanzar el equipo de destino especificado en un mensaje de eco ICMP; se desconoce la causa exacta del problema.

HardwareError 11008

Se ha producido un error en la solicitud de eco ICMP debido a un error de hardware.

IcmpError 11044

Se ha producido un error en la solicitud de eco ICMP debido a un error de protocolo ICMP.

NoResources 11006

Se ha producido un error en la solicitud de eco ICMP porque los recursos de red son insuficientes.

PacketTooBig 11009

Se ha producido un error en la solicitud de eco ICMP porque el paquete que contiene la solicitud es mayor que la unidad de transmisión máxima (MTU) de un nodo (enrutador o puerta de enlace) situado entre el origen y el destino. La MTU define el tamaño máximo de un paquete transmisible.

ParameterProblem 11015

Se ha producido un error en la solicitud de eco ICMP porque un nodo (enrutador o puerta de enlace) ha encontrado problemas durante el procesamiento del encabezado del paquete. Este estado tiene lugar cuando el encabezado contiene datos de campo que no son válidos o una opción no reconocida, por ejemplo.

SourceQuench 11016

Se ha producido un error en la solicitud de eco ICMP porque se ha descartado el paquete. Esto último ocurre cuando el espacio de almacenamiento de la cola de salida del equipo de origen es insuficiente, o cuando los paquetes llegan al destino demasiado rápido como para que se procesen.

Success 0

La solicitud de eco ICMP se ha efectuado correctamente; se ha recibido una respuesta de eco ICMP. Cuando se obtiene este código de estado, el resto de las propiedades de PingReply contienen datos válidos.

TimedOut 11010

La respuesta de eco ICMP no se ha recibido en el tiempo asignado. El intervalo de tiempo predeterminado permitido para las respuestas es de cinco segundos. Puede cambiar este valor mediante los métodos Send o SendAsync que toman un parámetro timeout.

TimeExceeded 11041

Se ha producido un error en la solicitud de eco ICMP porque su valor TTL (período de vida) ha alcanzado el cero, lo que ha provocado que el nodo de reenvío (enrutador o puerta de enlace) haya descartado el paquete.

TtlExpired 11013

Se ha producido un error en la solicitud de eco ICMP porque su valor TTL (período de vida) ha alcanzado el cero, lo que ha provocado que el nodo de reenvío (enrutador o puerta de enlace) haya descartado el paquete.

TtlReassemblyTimeExceeded 11014

Se ha producido un error en la solicitud de eco ICMP porque el paquete se ha dividido en varios fragmentos para su transmisión y no se han recibido todos los fragmentos en el tiempo asignado para el reensamblado. RFC 2460 especifica 60 segundos como límite de tiempo para recibir todos los fragmentos del paquete.

Unknown -1

Se desconoce la razón por la que se ha producido un error en la solicitud de eco ICMP.

UnrecognizedNextHeader 11043

Se ha producido un error en la solicitud de eco ICMP porque el campo de encabezado siguiente no contiene un valor reconocido. El campo de encabezado siguiente indica el tipo de encabezado de extensión (si existe) o el protocolo sobre la capa IP como, por ejemplo, TCP o UDP.

Ejemplos

En el ejemplo de código siguiente se envía un mensaje de eco ICMP y se comprueba el estado.

#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

Comentarios

La Ping clase usa los valores de esta enumeración para establecer la PingReply.Status propiedad . La Ping clase devuelve PingReply objetos al llamar a los Ping.Send métodos o Ping.SendAsync para comprobar si puede acceder a un equipo a través de la red.

Advertencia

Los valores de enumeración DestinationProhibited y DestinationProtocolUnreachable tienen el mismo valor numérico. Esto es posible porque DestinationProhibited solo se aplica a IPv6 y DestinationProtocolUnreachable solo se aplica a IPv4.

Se aplica a