IPStatus Enumeração

Definição

Relata o status de envio de uma mensagem de eco do protocolo ICMP para um computador.

public enum class IPStatus
public enum IPStatus
type IPStatus = 
Public Enum IPStatus
Herança
IPStatus

Campos

BadDestination 11018

A solicitação de eco ICMP falhou porque o endereço IP de destino não pode receber solicitações de eco ICMP ou nunca deve aparecer no campo de endereço de destino de qualquer datagrama IP. Por exemplo, chamar Send e especificar o endereço IP "000.0.0.0" retorna esse status.

BadHeader 11042

A solicitação de eco ICMP falhou porque o cabeçalho é inválido.

BadOption 11007

A solicitação de eco ICMP falhou porque ela contém uma opção inválida.

BadRoute 11012

A solicitação de eco ICMP falhou porque não há nenhuma rota válida entre os computadores de origem e de destino.

DestinationHostUnreachable 11003

A solicitação de eco ICMP falhou porque o computador de destino não está acessível.

DestinationNetworkUnreachable 11002

A solicitação de eco ICMP falhou porque a rede que contém o computador de destino não está acessível.

DestinationPortUnreachable 11005

A solicitação de eco ICMP falhou porque a porta no computador de destino não está disponível.

DestinationProhibited 11004

A solicitação de eco ICMPv6 falhou porque o contato com o computador de destino é proibido administrativamente. Esse valor se aplica somente ao IPv6.

DestinationProtocolUnreachable 11004

A solicitação de eco ICMP falhou porque o computador de destino especificado em uma mensagem de eco ICMP está inacessível porque ele não dá suporte ao protocolo do pacote. Esse valor se aplica somente ao IPv4. Esse valor é descrito no IETF RFC 1812 como Comunicação Proibida Administrativamente.

DestinationScopeMismatch 11045

A solicitação de eco ICMP falhou porque o endereço de origem e o endereço de destino especificados em uma mensagem de eco ICMP não estão no mesmo escopo. Isso geralmente é causado por um roteador encaminhando um pacote usando uma interface que está fora do escopo do endereço de origem. Os escopos de endereço (vínculo local, site local e escopo global) determinam onde na rede um endereço é válido.

DestinationUnreachable 11040

A solicitação de eco ICMP falhou porque o computador de destino especificado em uma mensagem de eco ICMP está inacessível, a causa exata do problema é desconhecida.

HardwareError 11008

A solicitação de eco ICMP falhou devido a um erro de hardware.

IcmpError 11044

A solicitação de eco ICMP falhou devido a um erro de protocolo ICMP.

NoResources 11006

A solicitação de eco ICMP falhou devido a recursos de rede insuficientes.

PacketTooBig 11009

A solicitação de eco ICMP falhou porque o pacote que contém a solicitação é maior do que a MTU (Unidade Máxima de Transmissão) de um nó (roteador ou gateway) localizado entre a origem e o destino. A MTU define o tamanho máximo de um pacote transmissível.

ParameterProblem 11015

A solicitação de eco ICMP falhou porque um nó (roteador ou gateway) encontrou problemas ao processar o cabeçalho do pacote. Este será o status se, por exemplo, o cabeçalho contiver dados de campo inválidos ou uma opção não reconhecida.

SourceQuench 11016

A solicitação de eco ICMP falhou porque o pacote foi descartado. Isso ocorre quando a fila de saída do computador de origem tem espaço de armazenamento insuficiente ou quando os pacotes chegam ao destino rápido demais para serem processados.

Success 0

A solicitação de eco ICMP foi bem-sucedida, foi recebida uma resposta de eco ICMP. Quando você obtém esse código de status, as outras propriedades PingReply contêm dados válidos.

TimedOut 11010

A resposta de eco do ICMP não foi recebida dentro do tempo alocado. O tempo padrão permitido para respostas é 5 segundos. Você pode alterar esse valor usando os métodos Send ou SendAsync que aceitam um parâmetro timeout.

TimeExceeded 11041

A solicitação de eco ICMP falhou porque seu valor de TTL (vida útil) chegou a zero, fazendo o nó de encaminhamento (roteador ou gateway) descartar o pacote.

TtlExpired 11013

A solicitação de eco ICMP falhou porque seu valor de TTL (vida útil) chegou a zero, fazendo o nó de encaminhamento (roteador ou gateway) descartar o pacote.

TtlReassemblyTimeExceeded 11014

A solicitação de eco ICMP falhou porque o pacote foi dividido em fragmentos para transmissão e todos os fragmentos não foram recebidos dentro do tempo alocado para a remontagem. O RFC 2460 especifica 60 segundos como o limite de tempo no qual todos os fragmentos de pacote devem ser recebidos.

Unknown -1

A solicitação de eco ICMP falhou por motivo desconhecido.

UnrecognizedNextHeader 11043

A solicitação de eco ICMP falhou porque o campo Próximo Cabeçalho não contém um valor reconhecido. O campo Próximo Cabeçalho indica o tipo de cabeçalho de extensão (se houver) ou o protocolo acima da camada IP, por exemplo, TCP ou UDP.

Exemplos

O exemplo de código a seguir envia uma mensagem de eco ICMP e verifica o status.

#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

Comentários

A Ping classe usa os valores nessa enumeração para definir a PingReply.Status propriedade . A Ping classe retorna PingReply objetos quando você chama os Ping.Send métodos ou Ping.SendAsync para marcar se você pode acessar um computador pela rede.

Aviso

Os valores de enumeração DestinationProhibited e DestinationProtocolUnreachable têm o mesmo valor numérico. Isso é possível porque DestinationProhibited se aplica somente a IPv6 e DestinationProtocolUnreachable se aplica somente ao IPv4.

Aplica-se a