Ping.SendAsync Método

Definição

Tentativas de maneira assíncrona enviar uma mensagem de eco do protocolo ICMP a um computador e receber uma mensagem de resposta de eco ICMP correspondente daquele computador.

Sobrecargas

SendAsync(String, Int32, Byte[], PingOptions, Object)

Tenta de forma assíncrona enviar uma mensagem de eco do protocolo ICMP com o buffer de dados especificado para o computador especificado e receber uma mensagem de resposta de eco do ICMP correspondente do computador. Essa sobrecarga permite que você especifique um valor de tempo limite para a operação e a fragmentação de controle e valores de vida útil do pacote ICMP.

SendAsync(IPAddress, Int32, Byte[], PingOptions, Object)

Tenta de forma assíncrona enviar uma mensagem de eco do protocolo ICMP com o buffer de dados especificado para o computador que tem o IPAddress especificado e receber uma mensagem de resposta de eco do ICMP correspondente do computador. Essa sobrecarga permite que você especifique um valor de tempo limite para a operação e controle valores de fragmentação e vida útil para o pacote de mensagem de eco de ICMP.

SendAsync(String, Int32, Byte[], Object)

Tenta de forma assíncrona enviar uma mensagem de eco do protocolo ICMP com o buffer de dados especificado para o computador especificado e receber uma mensagem de resposta de eco do ICMP correspondente do computador. Essa sobrecarga permite que você especifique um valor de tempo limite para a operação.

SendAsync(IPAddress, Int32, Byte[], Object)

Tenta de forma assíncrona enviar uma mensagem de eco do protocolo ICMP com o buffer de dados especificado para o computador que tem o IPAddress especificado e receber uma mensagem de resposta de eco do ICMP correspondente do computador. Essa sobrecarga permite que você especifique um valor de tempo limite para a operação.

SendAsync(IPAddress, Int32, Object)

Tenta enviar assincronamente uma mensagem de eco do protocolo ICMP para o computador que tem o IPAddress especificado e receber uma mensagem de resposta de eco do ICMP correspondente desse computador. Essa sobrecarga permite que você especifique um valor de tempo limite para a operação.

SendAsync(String, Object)

Tenta enviar uma mensagem de eco do protocolo ICMP para o computador especificado e receber uma mensagem de resposta de eco do ICMP correspondente do computador de maneira assíncrona.

SendAsync(IPAddress, Object)

Tenta enviar assincronamente uma mensagem de eco do protocolo ICMP para o computador que tem o IPAddress especificado e receber uma mensagem de resposta de eco do ICMP correspondente desse computador.

SendAsync(String, Int32, Object)

Tenta enviar uma mensagem de eco do protocolo ICMP para o computador especificado e receber uma mensagem de resposta de eco do ICMP correspondente do computador de maneira assíncrona. Essa sobrecarga permite que você especifique um valor de tempo limite para a operação.

Comentários

Esses métodos não fazem com que o thread main do aplicativo seja bloqueado. Se você quiser bloquear enquanto aguarda a mensagem de resposta de eco ICMP, use os Send métodos .

Observação

O endereço IP retornado por qualquer um dos SendAsync métodos pode ser originado de um computador remoto mal-intencionado. Não se conecte ao computador remoto usando isso. Use o DNS para determinar o endereço IP do computador ao qual você deseja se conectar.

SendAsync(String, Int32, Byte[], PingOptions, Object)

Origem:
Ping.cs
Origem:
Ping.cs
Origem:
Ping.cs

Tenta de forma assíncrona enviar uma mensagem de eco do protocolo ICMP com o buffer de dados especificado para o computador especificado e receber uma mensagem de resposta de eco do ICMP correspondente do computador. Essa sobrecarga permite que você especifique um valor de tempo limite para a operação e a fragmentação de controle e valores de vida útil do pacote ICMP.

public:
 void SendAsync(System::String ^ hostNameOrAddress, int timeout, cli::array <System::Byte> ^ buffer, System::Net::NetworkInformation::PingOptions ^ options, System::Object ^ userToken);
public void SendAsync (string hostNameOrAddress, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions? options, object? userToken);
public void SendAsync (string hostNameOrAddress, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions options, object userToken);
member this.SendAsync : string * int * byte[] * System.Net.NetworkInformation.PingOptions * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, timeout As Integer, buffer As Byte(), options As PingOptions, userToken As Object)

Parâmetros

hostNameOrAddress
String

Um String que identifica o computador de destino para a mensagem de eco do ICMP. O valor especificado para esse parâmetro pode ser um nome do host ou uma representação de cadeia de caracteres de um endereço IP.

timeout
Int32

Um valor Int32 que especifica o número máximo de milissegundos (após o envio da mensagem de eco) de espera pela mensagem de resposta de eco de ICMP.

buffer
Byte[]

Uma matriz Byte que contém dados a serem enviados com a mensagem de eco de ICMP e retornados na mensagem de resposta de eco de ICMP. A matriz não pode conter mais de 65.500 bytes.

options
PingOptions

Um objeto PingOptions usado para controlar a fragmentação e valores de vida útil para o pacote de mensagens de eco ICMP.

userToken
Object

Um objeto passado para o método invocado quando a operação assíncrona é concluída.

Exceções

hostNameOrAddress é null ou é uma cadeia de caracteres vazia ("").

- ou -

buffer é null.

timeout é menor que zero.

Uma chamada para SendAsync está em andamento.

Uma exceção foi gerada durante o envio ou recebimento de mensagens do ICMP. Consulte a exceção interna para obter a exceção exata gerada.

O hostNameOrAddress não pôde ser resolvido para um endereço IP válido.

O objeto foi descartado.

O tamanho do buffer excede 65.500 bytes.

.NET 7 e versões posteriores somente no Linux: o processo não tem privilégios e buffer não está vazio.

Exemplos

O exemplo de código a seguir demonstra como chamar esse método.

#using <System.dll>

using namespace System;
using namespace System::Text;
using namespace System::Net;
using namespace System::Net::NetworkInformation;
using namespace System::ComponentModel;
using namespace System::Threading;
void PingCompletedCallback( Object^ sender, PingCompletedEventArgs^ e );
void DisplayReply( PingReply^ reply );
int main()
{
   array<String^>^args = Environment::GetCommandLineArgs();
   if ( args->Length == 1 )
      throw gcnew ArgumentException( "Ping needs a host or IP Address." );

   String^ who = args[ 1 ];
   AutoResetEvent^ waiter = gcnew AutoResetEvent( false );
   
   Ping ^ pingSender = gcnew Ping;
   
   // When the PingCompleted event is raised,
   // the PingCompletedCallback method is called.
   pingSender->PingCompleted += gcnew PingCompletedEventHandler( PingCompletedCallback );
   
   // Create a buffer of 32 bytes of data to be transmitted.
   String^ data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
   array<Byte>^buffer = Encoding::ASCII->GetBytes( data );
   
   // Wait 12 seconds for a reply.
   int timeout = 12000;
   
   // Set options for transmission:
   // The data can go through 64 gateways or routers
   // before it is destroyed, and the data packet
   // cannot be fragmented.
   PingOptions ^ options = gcnew PingOptions( 64,true );
   Console::WriteLine( "Time to live: {0}", options->Ttl );
   Console::WriteLine( "Don't fragment: {0}", options->DontFragment );
   
   // Send the ping asynchronously.
   // Use the waiter as the user token.
   // When the callback completes, it can wake up this thread.
   pingSender->SendAsync( who, timeout, buffer, options, waiter );
   
   // Prevent this example application from ending.
   // A real application should do something useful
   // when possible.
   waiter->WaitOne();
   Console::WriteLine( "Ping example completed." );
}


void PingCompletedCallback( Object^ /*sender*/, PingCompletedEventArgs^ e )
{
   
   // If the operation was canceled, display a message to the user.
   if ( e->Cancelled )
   {
      Console::WriteLine( "Ping canceled." );
      
      // Let the main thread resume. 
      // UserToken is the AutoResetEvent object that the main thread 
      // is waiting for.
      (dynamic_cast<AutoResetEvent^>(e->UserState))->Set();
   }

   
   // If an error occurred, display the exception to the user.
   if ( e->Error != nullptr )
   {
      Console::WriteLine( "Ping failed:" );
      Console::WriteLine( e->Error->ToString() );
      
      // Let the main thread resume. 
      (dynamic_cast<AutoResetEvent^>(e->UserState))->Set();
   }

   PingReply ^ reply = e->Reply;
   DisplayReply( reply );
   
   // Let the main thread resume.
   (dynamic_cast<AutoResetEvent^>(e->UserState))->Set();
}


void DisplayReply( PingReply ^ reply )
{
   if ( reply == nullptr )
      return;

   Console::WriteLine( "ping status: {0}", reply->Status );
   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.Text;
using System.Net;
using System.Net.NetworkInformation;
using System.ComponentModel;
using System.Threading;

namespace Examples.System.Net.NetworkInformation.PingTest
{
    public class PingExample
    {
        public static void Main (string[] args)
        {
            if (args.Length == 0)
                throw new ArgumentException ("Ping needs a host or IP Address.");

            string who = args[0];
            AutoResetEvent waiter = new AutoResetEvent (false);

            Ping pingSender = new Ping ();

            // When the PingCompleted event is raised,
            // the PingCompletedCallback method is called.
            pingSender.PingCompleted += new PingCompletedEventHandler (PingCompletedCallback);

            // Create a buffer of 32 bytes of data to be transmitted.
            string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
            byte[] buffer = Encoding.ASCII.GetBytes (data);

            // Wait 12 seconds for a reply.
            int timeout = 12000;

            // Set options for transmission:
            // The data can go through 64 gateways or routers
            // before it is destroyed, and the data packet
            // cannot be fragmented.
            PingOptions options = new PingOptions (64, true);

            Console.WriteLine ("Time to live: {0}", options.Ttl);
            Console.WriteLine ("Don't fragment: {0}", options.DontFragment);

            // Send the ping asynchronously.
            // Use the waiter as the user token.
            // When the callback completes, it can wake up this thread.
            pingSender.SendAsync(who, timeout, buffer, options, waiter);

            // Prevent this example application from ending.
            // A real application should do something useful
            // when possible.
            waiter.WaitOne ();
            Console.WriteLine ("Ping example completed.");
        }

        private static void PingCompletedCallback (object sender, PingCompletedEventArgs e)
        {
            // If the operation was canceled, display a message to the user.
            if (e.Cancelled)
            {
                Console.WriteLine ("Ping canceled.");

                // Let the main thread resume.
                // UserToken is the AutoResetEvent object that the main thread
                // is waiting for.
                ((AutoResetEvent)e.UserState).Set ();
            }

            // If an error occurred, display the exception to the user.
            if (e.Error != null)
            {
                Console.WriteLine ("Ping failed:");
                Console.WriteLine (e.Error.ToString ());

                // Let the main thread resume.
                ((AutoResetEvent)e.UserState).Set();
            }

            PingReply reply = e.Reply;

            DisplayReply (reply);

            // Let the main thread resume.
            ((AutoResetEvent)e.UserState).Set();
        }

        public static void DisplayReply (PingReply reply)
        {
            if (reply == null)
                return;

            Console.WriteLine ("ping status: {0}", reply.Status);
            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);
            }
        }
    }
}

Comentários

O SendAsync método envia a mensagem Echo de forma assíncrona e, quando a operação é concluída (com êxito ou sem êxito), retorna o status para seu aplicativo. Chame o SendAsync método quando seu aplicativo não deve bloquear. Cada chamada é executada em um thread separado que é alocado automaticamente do pool de threads. Quando a operação assíncrona é concluída, ela aciona o PingCompleted evento. Os aplicativos usam um PingCompletedEventHandler delegado para especificar o método que é chamado quando SendAsync gera o evento. Você deve adicionar um PingCompletedEventHandler delegado ao evento antes de chamar SendAsync. O método do delegado recebe um PingCompletedEventArgs objeto que contém um PingReply objeto que descreve o resultado da SendAsync chamada. O PingCompletedEventArgs objeto herda a UserState propriedade . Essa propriedade contém o userToken objeto passado para a SendAsync chamada.

Se o aplicativo deve bloquear enquanto aguarda uma resposta, use os Send métodos; esses métodos são síncronos.

Se a mensagem de resposta de eco ICMP não for recebida dentro do tempo especificado pelo timeout parâmetro , o eco ICMP falhará e a Status propriedade será definida como TimedOut.

Observação

Ao especificar números muito pequenos para timeout, a resposta ping pode ser recebida mesmo se timeout milissegundos tiverem decorrido.

Se a DontFragment propriedade for true e o tamanho total do pacote exceder o tamanho máximo do pacote que pode ser transmitido por um dos nós de roteamento entre os computadores locais e remotos, a solicitação de eco ICMP falhará. Quando isso acontece, o Status é definido como PacketTooBig.

Use a Ttl propriedade para especificar o número máximo de vezes que a mensagem de eco ICMP pode ser encaminhada antes de chegar ao seu destino. Se o pacote não atingir seu destino depois de ser encaminhado o número especificado de vezes, o pacote será descartado e a solicitação de eco ICMP falhará. Quando isso acontece, o Status é definido como TtlExpired.

Aplica-se a

SendAsync(IPAddress, Int32, Byte[], PingOptions, Object)

Origem:
Ping.cs
Origem:
Ping.cs
Origem:
Ping.cs

Tenta de forma assíncrona enviar uma mensagem de eco do protocolo ICMP com o buffer de dados especificado para o computador que tem o IPAddress especificado e receber uma mensagem de resposta de eco do ICMP correspondente do computador. Essa sobrecarga permite que você especifique um valor de tempo limite para a operação e controle valores de fragmentação e vida útil para o pacote de mensagem de eco de ICMP.

public:
 void SendAsync(System::Net::IPAddress ^ address, int timeout, cli::array <System::Byte> ^ buffer, System::Net::NetworkInformation::PingOptions ^ options, System::Object ^ userToken);
public void SendAsync (System.Net.IPAddress address, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions? options, object? userToken);
public void SendAsync (System.Net.IPAddress address, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions options, object userToken);
member this.SendAsync : System.Net.IPAddress * int * byte[] * System.Net.NetworkInformation.PingOptions * obj -> unit
Public Sub SendAsync (address As IPAddress, timeout As Integer, buffer As Byte(), options As PingOptions, userToken As Object)

Parâmetros

address
IPAddress

Um IPAddress que identifica o computador de destino da mensagem de eco ICMP.

timeout
Int32

Um valor Int32 que especifica o número máximo de milissegundos (após o envio da mensagem de eco) de espera pela mensagem de resposta de eco de ICMP.

buffer
Byte[]

Uma matriz Byte que contém dados a serem enviados com a mensagem de eco de ICMP e retornados na mensagem de resposta de eco de ICMP. A matriz não pode conter mais de 65.500 bytes.

options
PingOptions

Um objeto PingOptions usado para controlar a fragmentação e valores de vida útil para o pacote de mensagens de eco ICMP.

userToken
Object

Um objeto passado para o método invocado quando a operação assíncrona é concluída.

Exceções

address ou buffer é null.

timeout é menor que zero.

Uma chamada para SendAsync está em andamento.

Uma exceção foi gerada durante o envio ou recebimento de mensagens do ICMP. Consulte a exceção interna para obter a exceção exata gerada.

address não é um endereço IP válido.

O objeto foi descartado.

O tamanho do buffer excede 65.500 bytes.

.NET 7 e versões posteriores somente no Linux: o processo não tem privilégios e buffer não está vazio.

Exemplos

O exemplo de código a seguir demonstra como chamar esse método. Para obter uma implementação do método de retorno de chamada, consulte a seção de exemplo de sobrecarga do SendAsync método.

O exemplo de código a seguir requer os seguintes namespaces:

#using <System.dll>

using namespace System;
using namespace System::Net;
using namespace System::Net::NetworkInformation;
using namespace System::Text;
using namespace System::Threading;
using System;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading;

O exemplo de código a seguir envia uma mensagem de eco ICMP de forma assíncrona.

void AsyncComplexLocalPing()
{
   
   // Get an object that will block the main thread.
   AutoResetEvent^ waiter = gcnew AutoResetEvent( false );
   
   // Ping's the local machine.
   Ping ^ pingSender = gcnew Ping;
   
   // When the PingCompleted event is raised,
   // the PingCompletedCallback method is called.
   pingSender->PingCompleted += gcnew PingCompletedEventHandler( PingCompletedCallback );
   IPAddress^ address = IPAddress::Loopback;
   
   // Create a buffer of 32 bytes of data to be transmitted.
   String^ data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
   array<Byte>^buffer = Encoding::ASCII->GetBytes( data );
   
   // Wait 10 seconds for a reply.
   int timeout = 10000;
   
   // Set options for transmission:
   // The data can go through 64 gateways or routers
   // before it is destroyed, and the data packet
   // cannot be fragmented.
   PingOptions ^ options = gcnew PingOptions( 64,true );
   
   // Send the ping asynchronously.
   // Use the waiter as the user token.
   // When the callback completes, it can wake up this thread.
   pingSender->SendAsync( address, timeout, buffer, options, waiter );
   
   // Prevent this example application from ending.
   // A real application should do something useful
   // when possible.
   waiter->WaitOne();
   Console::WriteLine( "Ping example completed." );
}
public static void AsyncComplexLocalPing ()
{
    // Get an object that will block the main thread.
    AutoResetEvent waiter = new AutoResetEvent (false);

    // Ping's the local machine.
    Ping pingSender = new Ping ();

    // When the PingCompleted event is raised,
    // the PingCompletedCallback method is called.
    pingSender.PingCompleted += new PingCompletedEventHandler (PingCompletedCallback);

    IPAddress address = IPAddress.Loopback;

    // Create a buffer of 32 bytes of data to be transmitted.
    string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
    byte[] buffer = Encoding.ASCII.GetBytes (data);

    // Wait 10 seconds for a reply.
    int timeout = 10000;

    // Set options for transmission:
    // The data can go through 64 gateways or routers
    // before it is destroyed, and the data packet
    // cannot be fragmented.
    PingOptions options = new PingOptions (64, true);

    // Send the ping asynchronously.
    // Use the waiter as the user token.
    // When the callback completes, it can wake up this thread.
    pingSender.SendAsync (address, timeout, buffer, options, waiter);

    // Prevent this example application from ending.
    // A real application should do something useful
    // when possible.
    waiter.WaitOne ();
    Console.WriteLine ("Ping example completed.");
}

Comentários

O SendAsync método envia a mensagem Echo de forma assíncrona e, quando a operação é concluída (com êxito ou sem êxito), retorna o status para seu aplicativo. Chame o SendAsync método quando seu aplicativo não deve bloquear. Cada chamada é executada em um thread separado que é alocado automaticamente do pool de threads. Quando a operação assíncrona é concluída, ela aciona o PingCompleted evento. Os aplicativos usam um PingCompletedEventHandler delegado para especificar o método que é chamado quando SendAsync gera o evento. Você deve adicionar um PingCompletedEventHandler delegado ao evento antes de chamar SendAsync. O método do delegado recebe um PingCompletedEventArgs objeto que contém um PingReply objeto que descreve o resultado da SendAsync chamada. O PingCompletedEventArgs objeto herda a UserState propriedade . Essa propriedade contém o userToken objeto passado para a SendAsync chamada.

Se o aplicativo bloquear enquanto aguarda uma resposta, use os Send métodos; esses métodos são síncronos.

Se a mensagem de resposta de eco ICMP não for recebida dentro do tempo especificado pelo timeout parâmetro , o eco ICMP falhará e a Status propriedade será definida como TimedOut.

Observação

Ao especificar números muito pequenos para timeout, a resposta ping pode ser recebida mesmo se timeout milissegundos tiverem decorrido.

Se a DontFragment propriedade for true e o tamanho total do pacote exceder o tamanho máximo do pacote que pode ser transmitido por um dos nós de roteamento entre os computadores locais e remotos, a solicitação de eco ICMP falhará. Quando isso acontece, o Status é definido como PacketTooBig.

Use a Ttl propriedade para especificar o número máximo de vezes que a mensagem de eco ICMP pode ser encaminhada antes de chegar ao seu destino. Se o pacote não atingir seu destino depois de ser encaminhado o número especificado de vezes, o pacote será descartado e a solicitação de eco ICMP falhará. Quando isso acontece, o Status é definido como TtlExpired.

Aplica-se a

SendAsync(String, Int32, Byte[], Object)

Origem:
Ping.cs
Origem:
Ping.cs
Origem:
Ping.cs

Tenta de forma assíncrona enviar uma mensagem de eco do protocolo ICMP com o buffer de dados especificado para o computador especificado e receber uma mensagem de resposta de eco do ICMP correspondente do computador. Essa sobrecarga permite que você especifique um valor de tempo limite para a operação.

public:
 void SendAsync(System::String ^ hostNameOrAddress, int timeout, cli::array <System::Byte> ^ buffer, System::Object ^ userToken);
public void SendAsync (string hostNameOrAddress, int timeout, byte[] buffer, object? userToken);
public void SendAsync (string hostNameOrAddress, int timeout, byte[] buffer, object userToken);
member this.SendAsync : string * int * byte[] * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, timeout As Integer, buffer As Byte(), userToken As Object)

Parâmetros

hostNameOrAddress
String

Um String que identifica o computador de destino para a mensagem de eco do ICMP. O valor especificado para esse parâmetro pode ser um nome do host ou uma representação de cadeia de caracteres de um endereço IP.

timeout
Int32

Um valor Int32 que especifica o número máximo de milissegundos (após o envio da mensagem de eco) de espera pela mensagem de resposta de eco de ICMP.

buffer
Byte[]

Uma matriz Byte que contém dados a serem enviados com a mensagem de eco de ICMP e retornados na mensagem de resposta de eco de ICMP. A matriz não pode conter mais de 65.500 bytes.

userToken
Object

Um objeto passado para o método invocado quando a operação assíncrona é concluída.

Exceções

hostNameOrAddress é null ou é uma cadeia de caracteres vazia ("").

- ou -

buffer é null.

timeout é menor que zero.

Uma chamada para SendAsync está em andamento.

Uma exceção foi gerada durante o envio ou recebimento de mensagens do ICMP. Consulte a exceção interna para obter a exceção exata gerada.

O hostNameOrAddress não pôde ser resolvido para um endereço IP válido.

O objeto foi descartado.

O tamanho do buffer excede 65.500 bytes.

.NET 7 e versões posteriores somente no Linux: o processo não tem privilégios e buffer não está vazio.

Exemplos

O exemplo de código a seguir demonstra como chamar uma SendAsync sobrecarga, consulte a visão geral da Ping classe.

Comentários

O SendAsync método envia a mensagem Echo de forma assíncrona e, quando a operação é concluída (com êxito ou sem êxito), retorna o status para seu aplicativo. Chame o SendAsync método quando seu aplicativo não deve bloquear. Cada chamada é executada em um thread separado que é alocado automaticamente do pool de threads. Quando a operação assíncrona é concluída, ela aciona o PingCompleted evento. Os aplicativos usam um PingCompletedEventHandler delegado para especificar o método que é chamado quando SendAsync gera o evento. Você deve adicionar um PingCompletedEventHandler delegado ao evento antes de chamar SendAsync. O método do delegado recebe um PingCompletedEventArgs objeto que contém um PingReply objeto que descreve o resultado da SendAsync chamada. O PingCompletedEventArgs objeto herda a UserState propriedade . Essa propriedade contém o userToken objeto passado para a SendAsync chamada.

Se o aplicativo deve bloquear enquanto aguarda uma resposta, use os Send métodos; esses métodos são síncronos.

Se a mensagem de resposta de eco ICMP não for recebida dentro do tempo especificado pelo timeout parâmetro , o eco ICMP falhará e a Status propriedade será definida como TimedOut.

Observação

Ao especificar números muito pequenos para timeout, a resposta ping pode ser recebida mesmo se timeout milissegundos tiverem decorrido.

Essa sobrecarga usa configurações padrão para fragmentação de pacotes e encaminhamento de pacotes. O pacote que contém a mensagem de eco ICMP poderá ser fragmentado em trânsito se o tamanho total do pacote exceder o tamanho máximo do pacote que pode ser transmitido por um dos nós de roteamento entre os computadores locais e remotos. Para evitar a fragmentação, use um dos SendAsync métodos que usa um options parâmetro e defina a DontFragment propriedade como true. Quando DontFragment é true e o tamanho total do pacote excede o tamanho máximo do pacote que pode ser transmitido por um dos nós de roteamento entre os computadores locais e remotos, a solicitação de eco ICMP falha. Quando isso acontece, o Status é definido como PacketTooBig. Os fragmentos de pacote ou pacote (se fragmentados) podem ser encaminhados roteando nós 128 vezes antes de serem descartados. Para alterar essa configuração, use uma SendAsync sobrecarga que usa um options parâmetro e defina a Ttl propriedade como o valor desejado. Se o pacote não atingir seu destino depois de ser encaminhado o número especificado de vezes, o pacote será descartado e a solicitação de eco ICMP falhará. Quando isso acontece, o Status é definido como TtlExpired.

Aplica-se a

SendAsync(IPAddress, Int32, Byte[], Object)

Origem:
Ping.cs
Origem:
Ping.cs
Origem:
Ping.cs

Tenta de forma assíncrona enviar uma mensagem de eco do protocolo ICMP com o buffer de dados especificado para o computador que tem o IPAddress especificado e receber uma mensagem de resposta de eco do ICMP correspondente do computador. Essa sobrecarga permite que você especifique um valor de tempo limite para a operação.

public:
 void SendAsync(System::Net::IPAddress ^ address, int timeout, cli::array <System::Byte> ^ buffer, System::Object ^ userToken);
public void SendAsync (System.Net.IPAddress address, int timeout, byte[] buffer, object? userToken);
public void SendAsync (System.Net.IPAddress address, int timeout, byte[] buffer, object userToken);
member this.SendAsync : System.Net.IPAddress * int * byte[] * obj -> unit
Public Sub SendAsync (address As IPAddress, timeout As Integer, buffer As Byte(), userToken As Object)

Parâmetros

address
IPAddress

Um IPAddress que identifica o computador de destino da mensagem de eco ICMP.

timeout
Int32

Um valor Int32 que especifica o número máximo de milissegundos (após o envio da mensagem de eco) de espera pela mensagem de resposta de eco de ICMP.

buffer
Byte[]

Uma matriz Byte que contém dados a serem enviados com a mensagem de eco de ICMP e retornados na mensagem de resposta de eco de ICMP. A matriz não pode conter mais de 65.500 bytes.

userToken
Object

Um objeto passado para o método invocado quando a operação assíncrona é concluída.

Exceções

address ou buffer é null.

timeout é menor que zero.

Uma chamada para SendAsync está em andamento.

Uma exceção foi gerada durante o envio ou recebimento de mensagens do ICMP. Consulte a exceção interna para obter a exceção exata gerada.

address não é um endereço IP válido.

O objeto foi descartado.

O tamanho do buffer excede 65.500 bytes.

.NET 7 e versões posteriores somente no Linux: o processo não tem privilégios e buffer não está vazio.

Exemplos

Para obter um exemplo de código que demonstra a chamada de uma SendAsync sobrecarga, consulte a visão geral da Ping classe.

Comentários

Esse método envia a mensagem de eco de forma assíncrona e, quando a operação é concluída (com êxito ou sem êxito), retorna o status para seu aplicativo. Chame o SendAsync método quando seu aplicativo não deve bloquear. Cada chamada é executada em um thread separado que é alocado automaticamente do pool de threads. Quando a operação assíncrona é concluída, ela aciona o PingCompleted evento. Para especificar o método que é chamado quando SendAsync gera o evento, você deve adicionar um PingCompletedEventHandler delegado ao evento antes de chamar SendAsync. O método do delegado recebe um PingCompletedEventArgs objeto que contém um PingReply objeto que descreve o resultado da SendAsync chamada. O PingCompletedEventArgs objeto herda a UserState propriedade . Essa propriedade contém o userToken objeto passado para a SendAsync chamada.

Observação

Se o aplicativo bloquear enquanto aguarda uma resposta, use os Send métodos; esses métodos são síncronos.

Se a mensagem de resposta de eco ICMP não for recebida dentro do tempo especificado pelo timeout parâmetro , o eco ICMP falhará e a Status propriedade será definida como TimedOut.

Observação

Ao especificar números muito pequenos para timeout, a resposta ping pode ser recebida mesmo se timeout milissegundos tiverem decorrido.

Essa sobrecarga usa configurações padrão para fragmentação de pacotes e encaminhamento de pacotes. O pacote que contém a mensagem de eco ICMP poderá ser fragmentado em trânsito se o tamanho total do pacote exceder o tamanho máximo do pacote que pode ser transmitido por um dos nós de roteamento entre os computadores locais e remotos. Para evitar a fragmentação, use um dos SendAsync métodos que usa um options parâmetro e defina a DontFragment propriedade como true. Quando DontFragment é true e o tamanho total do pacote excede o tamanho máximo do pacote que pode ser transmitido por um dos nós de roteamento entre os computadores locais e remotos, a solicitação de eco ICMP falha. Quando isso acontece, o Status é definido como PacketTooBig. Os fragmentos de pacote ou pacote (se fragmentados) podem ser encaminhados roteando nós 128 vezes antes de serem descartados. Para alterar essa configuração, use uma SendAsync sobrecarga que usa um options parâmetro e defina a Ttl propriedade como o valor desejado. Se o pacote não atingir seu destino depois de ser encaminhado o número especificado de vezes, o pacote será descartado e a solicitação de eco ICMP falhará. Quando isso acontece, o Status é definido como TtlExpired.

Aplica-se a

SendAsync(IPAddress, Int32, Object)

Origem:
Ping.cs
Origem:
Ping.cs
Origem:
Ping.cs

Tenta enviar assincronamente uma mensagem de eco do protocolo ICMP para o computador que tem o IPAddress especificado e receber uma mensagem de resposta de eco do ICMP correspondente desse computador. Essa sobrecarga permite que você especifique um valor de tempo limite para a operação.

public:
 void SendAsync(System::Net::IPAddress ^ address, int timeout, System::Object ^ userToken);
public void SendAsync (System.Net.IPAddress address, int timeout, object? userToken);
public void SendAsync (System.Net.IPAddress address, int timeout, object userToken);
member this.SendAsync : System.Net.IPAddress * int * obj -> unit
Public Sub SendAsync (address As IPAddress, timeout As Integer, userToken As Object)

Parâmetros

address
IPAddress

Um IPAddress que identifica o computador de destino da mensagem de eco ICMP.

timeout
Int32

Um valor Int32 que especifica o número máximo de milissegundos (após o envio da mensagem de eco) de espera pela mensagem de resposta de eco de ICMP.

userToken
Object

Um objeto passado para o método invocado quando a operação assíncrona é concluída.

Exceções

address é null.

timeout é menor que zero.

Uma chamada para o método SendAsync(IPAddress, Int32, Byte[], Object) está em andamento.

Uma exceção foi gerada durante o envio ou recebimento de mensagens do ICMP. Consulte a exceção interna para obter a exceção exata gerada.

address não é um endereço IP válido.

O objeto foi descartado.

Exemplos

Para obter um exemplo de código que demonstra a chamada de uma SendAsync sobrecarga, consulte a visão geral da Ping classe.

Comentários

O SendAsync método envia a mensagem Echo de forma assíncrona e, quando a operação é concluída (com êxito ou sem êxito), retorna o status para seu aplicativo. Chame o SendAsync método quando o aplicativo não deve ser bloqueado. Cada chamada é executada em um thread separado que é alocado automaticamente do pool de threads. Quando a operação assíncrona é concluída, ela aciona o PingCompleted evento. Os aplicativos usam um PingCompletedEventHandler delegado para especificar o método que é chamado quando SendAsync aciona o evento. Você deve adicionar um PingCompletedEventHandler delegado ao evento antes de chamar SendAsync. O método do delegado recebe um PingCompletedEventArgs objeto que contém um PingReply objeto que descreve o resultado da SendAsync chamada. O PingCompletedEventArgs objeto herda a UserState propriedade . Essa propriedade contém o userToken objeto passado para a SendAsync chamada.

Se o aplicativo deve ser bloqueado enquanto aguarda uma resposta, use os Send métodos ; esses métodos são síncronos.

Se a mensagem de resposta de eco ICMP não for recebida dentro do tempo especificado pelo timeout parâmetro , o eco ICMP falhará e a Status propriedade será definida TimedOutcomo .

Observação

Ao especificar números muito pequenos para timeout, a resposta ping pode ser recebida mesmo se timeout milissegundos tiverem decorrido.

Essa sobrecarga usa as configurações padrão para fragmentação de pacotes e encaminhamento de pacotes. O pacote que contém a mensagem de eco ICMP poderá ser fragmentado em trânsito se o tamanho total do pacote exceder o tamanho máximo do pacote que pode ser transmitido por um dos nós de roteamento entre os computadores locais e remotos. Para evitar a fragmentação, use um dos SendAsync métodos que usa um options parâmetro e defina a DontFragment propriedade como true. Quando DontFragment é true e o tamanho total do pacote excede o tamanho máximo do pacote que pode ser transmitido por um dos nós de roteamento entre os computadores locais e remotos, a solicitação de eco ICMP falha. Quando isso acontece, o Status é definido PacketTooBigcomo . Os fragmentos de pacote ou pacote (se fragmentados) podem ser encaminhados por nós de roteamento 128 vezes antes de serem descartados. Para alterar essa configuração, use uma SendAsync sobrecarga que usa um options parâmetro e defina a Ttl propriedade como o valor desejado. Se o pacote não atingir seu destino depois de ser encaminhado o número especificado de vezes, o pacote será descartado e a solicitação de eco ICMP falhará. Quando isso acontece, o Status é definido TtlExpiredcomo .

Aplica-se a

SendAsync(String, Object)

Origem:
Ping.cs
Origem:
Ping.cs
Origem:
Ping.cs

Tenta enviar uma mensagem de eco do protocolo ICMP para o computador especificado e receber uma mensagem de resposta de eco do ICMP correspondente do computador de maneira assíncrona.

public:
 void SendAsync(System::String ^ hostNameOrAddress, System::Object ^ userToken);
public void SendAsync (string hostNameOrAddress, object? userToken);
public void SendAsync (string hostNameOrAddress, object userToken);
member this.SendAsync : string * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, userToken As Object)

Parâmetros

hostNameOrAddress
String

Um String que identifica o computador de destino para a mensagem de eco do ICMP. O valor especificado para esse parâmetro pode ser um nome do host ou uma representação de cadeia de caracteres de um endereço IP.

userToken
Object

Um objeto passado para o método invocado quando a operação assíncrona é concluída.

Exceções

hostNameOrAddress é null ou é uma cadeia de caracteres vazia ("").

Uma chamada para o método SendAsync(String, Object) está em andamento.

Uma exceção foi gerada durante o envio ou recebimento de mensagens do ICMP. Consulte a exceção interna para obter a exceção exata gerada.

O hostNameOrAddress não pôde ser resolvido para um endereço IP válido.

O objeto foi descartado.

Exemplos

Para obter um exemplo de código que demonstra a chamada do SendAsync método , consulte a visão geral da Ping classe.

Comentários

O SendAsync método envia a mensagem de eco de forma assíncrona e, quando a operação é concluída (com êxito ou sem êxito), retorna o status para seu aplicativo. Chame o SendAsync método quando o aplicativo não deve ser bloqueado. Cada chamada para esse método é executada em um thread separado que é alocado automaticamente do pool de threads. Quando a operação assíncrona é concluída, ela aciona o PingCompleted evento. Para especificar o método que é chamado quando SendAsync aciona o evento, você deve adicionar um PingCompletedEventHandler delegado ao evento antes de chamar SendAsync. O método do delegado recebe um PingCompletedEventArgs objeto que contém um PingReply objeto que descreve o resultado da SendAsync chamada. O PingCompletedEventArgs objeto herda a UserState propriedade . Essa propriedade contém o userToken objeto passado para a SendAsync chamada.

Observação

Se o aplicativo deve ser bloqueado enquanto aguarda uma resposta, use os Send métodos ; esses métodos são síncronos.

Esse método envia um buffer de dados 32 Byte com a mensagem de eco ICMP. O método aguarda cinco segundos por uma mensagem de resposta de eco ICMP. Se ele não receber uma resposta nesse momento, o método retornará e a Status propriedade será definida TimedOutcomo .

Essa sobrecarga usa as configurações padrão para fragmentação de pacotes e encaminhamento de pacotes. O pacote que contém a mensagem de eco ICMP poderá ser fragmentado em trânsito se o tamanho total do pacote exceder o tamanho máximo do pacote que pode ser transmitido por um dos nós de roteamento entre os computadores locais e remotos. Para evitar a fragmentação, use um dos SendAsync métodos que usa um options parâmetro e defina a DontFragment propriedade como true. Quando DontFragment é true e o tamanho total do pacote excede o tamanho máximo do pacote que pode ser transmitido por um dos nós de roteamento entre os computadores locais e remotos, a solicitação de eco ICMP falha. Quando isso acontece, o Status é definido PacketTooBigcomo .

Os fragmentos de pacote ou pacote podem ser encaminhados roteando nós 128 vezes antes de serem descartados. Para alterar essa configuração, use uma SendAsync sobrecarga que usa um options parâmetro e defina a Ttl propriedade como o valor desejado. Se o pacote não atingir seu destino depois de ser encaminhado o número especificado de vezes, o pacote será descartado e a solicitação de eco ICMP falhará. Quando isso acontece, o Status é definido TtlExpiredcomo .

Aplica-se a

SendAsync(IPAddress, Object)

Origem:
Ping.cs
Origem:
Ping.cs
Origem:
Ping.cs

Tenta enviar assincronamente uma mensagem de eco do protocolo ICMP para o computador que tem o IPAddress especificado e receber uma mensagem de resposta de eco do ICMP correspondente desse computador.

public:
 void SendAsync(System::Net::IPAddress ^ address, System::Object ^ userToken);
public void SendAsync (System.Net.IPAddress address, object? userToken);
public void SendAsync (System.Net.IPAddress address, object userToken);
member this.SendAsync : System.Net.IPAddress * obj -> unit
Public Sub SendAsync (address As IPAddress, userToken As Object)

Parâmetros

address
IPAddress

Um IPAddress que identifica o computador de destino da mensagem de eco ICMP.

userToken
Object

Um objeto passado para o método invocado quando a operação assíncrona é concluída.

Exceções

address é null.

Uma chamada ao SendAsync método está em andamento.

Uma exceção foi gerada durante o envio ou recebimento de mensagens do ICMP. Consulte a exceção interna para obter a exceção exata gerada.

address não é um endereço IP válido.

O objeto foi descartado.

Exemplos

Para obter um exemplo de código que demonstra a chamada de um SendAsync método, consulte a visão geral da Ping classe.

Comentários

O SendAsync método envia a mensagem de eco de forma assíncrona e, quando a operação é concluída (com êxito ou sem êxito), retorna o status para seu aplicativo. Chame o SendAsync método quando o aplicativo não deve ser bloqueado. Cada chamada para esse método é executada em um thread separado que é alocado automaticamente do pool de threads. Quando a operação assíncrona é concluída, ela aciona o PingCompleted evento. Para especificar o método que é chamado quando SendAsync aciona o evento, você deve adicionar um PingCompletedEventHandler delegado ao evento antes de chamar SendAsync. O método do delegado recebe um PingCompletedEventArgs objeto que contém um PingReply objeto que descreve o resultado da SendAsync chamada. O PingCompletedEventArgs objeto herda a UserState propriedade . Essa propriedade contém o userToken objeto passado para a SendAsync chamada.

Observação

Se o aplicativo deve ser bloqueado enquanto aguarda uma resposta, use um dos Send métodos; esses métodos são síncronos.

Esse método envia um buffer de dados 32 Byte com a mensagem de eco ICMP. O método aguarda cinco segundos por uma mensagem de resposta de eco ICMP. Se ele não receber uma resposta nesse período, o método retornará e a Status propriedade será definida TimedOutcomo .

Essa sobrecarga usa as configurações padrão para fragmentação de pacotes e encaminhamento de pacotes. O pacote que contém a mensagem de eco ICMP poderá ser fragmentado em trânsito se o tamanho total do pacote exceder o tamanho máximo do pacote que pode ser transmitido por um dos nós de roteamento entre os computadores locais e remotos. Para evitar a fragmentação, use um dos SendAsync métodos que usa um options parâmetro e defina a DontFragment propriedade como true. Quando DontFragment é true e o tamanho total do pacote excede o tamanho máximo do pacote que pode ser transmitido por um dos nós de roteamento entre os computadores locais e remotos, a solicitação de eco ICMP falha. Quando isso acontece, o Status é definido PacketTooBigcomo .

Os fragmentos de pacote ou pacote podem ser encaminhados roteando nós 128 vezes antes de serem descartados. Para alterar essa configuração, use uma SendAsync sobrecarga que usa um options parâmetro e defina a Ttl propriedade como o valor desejado. Se o pacote não atingir seu destino depois de ser encaminhado o número especificado de vezes, o pacote será descartado e a solicitação de eco ICMP falhará. Quando isso acontece, o Status é definido TtlExpiredcomo .

Aplica-se a

SendAsync(String, Int32, Object)

Origem:
Ping.cs
Origem:
Ping.cs
Origem:
Ping.cs

Tenta enviar uma mensagem de eco do protocolo ICMP para o computador especificado e receber uma mensagem de resposta de eco do ICMP correspondente do computador de maneira assíncrona. Essa sobrecarga permite que você especifique um valor de tempo limite para a operação.

public:
 void SendAsync(System::String ^ hostNameOrAddress, int timeout, System::Object ^ userToken);
public void SendAsync (string hostNameOrAddress, int timeout, object? userToken);
public void SendAsync (string hostNameOrAddress, int timeout, object userToken);
member this.SendAsync : string * int * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, timeout As Integer, userToken As Object)

Parâmetros

hostNameOrAddress
String

Um String que identifica o computador de destino para a mensagem de eco do ICMP. O valor especificado para esse parâmetro pode ser um nome do host ou uma representação de cadeia de caracteres de um endereço IP.

timeout
Int32

Um valor Int32 que especifica o número máximo de milissegundos (após o envio da mensagem de eco) de espera pela mensagem de resposta de eco de ICMP.

userToken
Object

Um objeto passado para o método invocado quando a operação assíncrona é concluída.

Exceções

hostNameOrAddress é null ou é uma cadeia de caracteres vazia ("").

timeout é menor que zero.

Uma chamada para SendAsync está em andamento.

Uma exceção foi gerada durante o envio ou recebimento de mensagens do ICMP. Consulte a exceção interna para obter a exceção exata gerada.

O hostNameOrAddress não pôde ser resolvido para um endereço IP válido.

O objeto foi descartado.

Exemplos

Para obter um exemplo de código que demonstra a chamada do SendAsync método , consulte a visão geral da Ping classe.

Comentários

O SendAsync método envia a mensagem Echo de forma assíncrona e, quando a operação é concluída (com êxito ou sem êxito), retorna o status para seu aplicativo. Chame o SendAsync método quando o aplicativo não deve ser bloqueado. Cada chamada é executada em um thread separado que é alocado automaticamente do pool de threads. Quando a operação assíncrona é concluída, ela aciona o PingCompleted evento. Os aplicativos usam um PingCompletedEventHandler delegado para especificar o método que é chamado quando SendAsync aciona o evento. Você deve adicionar um PingCompletedEventHandler delegado ao evento antes de chamar SendAsync. O método do delegado recebe um PingCompletedEventArgs objeto que contém um PingReply objeto que descreve o resultado da SendAsync chamada. O PingCompletedEventArgs objeto herda a UserState propriedade . Essa propriedade contém o userToken objeto passado para a SendAsync chamada.

Se o aplicativo deve ser bloqueado enquanto aguarda uma resposta, use os Send métodos ; esses métodos são síncronos.

Se a mensagem de resposta de eco ICMP não for recebida dentro do tempo especificado pelo timeout parâmetro , o eco ICMP falhará e a Status propriedade será definida TimedOutcomo .

Observação

Ao especificar números muito pequenos para timeout, a resposta ping pode ser recebida mesmo se timeout milissegundos tiverem decorrido.

Essa sobrecarga usa as configurações padrão para fragmentação de pacotes e encaminhamento de pacotes. O pacote que contém a mensagem de eco ICMP poderá ser fragmentado em trânsito se o tamanho total do pacote exceder o tamanho máximo do pacote que pode ser transmitido por um dos nós de roteamento entre os computadores locais e remotos. Para evitar a fragmentação, use um dos SendAsync métodos que usa um options parâmetro e defina a DontFragment propriedade como true. Quando DontFragment é true e o tamanho total do pacote excede o tamanho máximo do pacote que pode ser transmitido por um dos nós de roteamento entre os computadores locais e remotos, a solicitação de eco ICMP falha. Quando isso acontece, o Status é definido PacketTooBigcomo . Os fragmentos de pacote ou pacote (se fragmentados) podem ser encaminhados por nós de roteamento 128 vezes antes de serem descartados. Para alterar essa configuração, use uma SendAsync sobrecarga que usa um options parâmetro e defina a Ttl propriedade como o valor desejado. Se o pacote não atingir seu destino depois de ser encaminhado o número especificado de vezes, o pacote será descartado e a solicitação de eco ICMP falhará. Quando isso acontece, o Status é definido TtlExpiredcomo .

Aplica-se a