Ping.SendAsync Ping.SendAsync Ping.SendAsync Ping.SendAsync Method

Definición

Intenta enviar de forma asincrónica un mensaje de eco ICMP (Protocolo de mensajes de control de Internet) al equipo especificado y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to a computer, and receive a corresponding ICMP echo reply message from that computer.

Sobrecargas

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

De forma asincrónica, intenta enviar un mensaje de eco ICMP (Protocolo de mensajes de control de Internet) con el búfer de datos especificado al equipo especificado, y recibir el correspondiente mensaje de respuesta de eco ICMP de ese equipo.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the specified computer, and receive a corresponding ICMP echo reply message from that computer. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación y controlar los valores de Período de vida y fragmentación para el paquete ICMP.This overload allows you to specify a time-out value for the operation and control fragmentation and Time-to-Live values for the ICMP packet.

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

De forma asincrónica, intenta enviar un mensaje de eco ICMP (Protocolo de mensajes de control de Internet) con el búfer de datos especificado al equipo que tiene la IPAddress especificada, y recibir el correspondiente mensaje de respuesta de eco ICMP de ese equipo.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación y controlar los valores de Período de vida y fragmentación para el paquete del mensaje de eco ICMP.This overload allows you to specify a time-out value for the operation and control fragmentation and Time-to-Live values for the ICMP echo message packet.

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

De forma asincrónica, intenta enviar un mensaje de eco ICMP (Protocolo de mensajes de control de Internet) con el búfer de datos especificado al equipo especificado, y recibir el correspondiente mensaje de respuesta de eco ICMP de ese equipo.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the specified computer, and receive a corresponding ICMP echo reply message from that computer. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación.This overload allows you to specify a time-out value for the operation.

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

De forma asincrónica, intenta enviar un mensaje de eco ICMP (Protocolo de mensajes de control de Internet) con el búfer de datos especificado al equipo que tiene la IPAddress especificada, y recibir el correspondiente mensaje de respuesta de eco ICMP de ese equipo.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación.This overload allows you to specify a time-out value for the operation.

SendAsync(IPAddress, Int32, Object) SendAsync(IPAddress, Int32, Object) SendAsync(IPAddress, Int32, Object) SendAsync(IPAddress, Int32, Object)

Intenta enviar de forma asincrónica un mensaje de eco ICMP (Protocolo de mensajes de control de Internet) al equipo que tiene la IPAddress especificada y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación.This overload allows you to specify a time-out value for the operation.

SendAsync(String, Object) SendAsync(String, Object) SendAsync(String, Object) SendAsync(String, Object)

Intenta enviar de forma asincrónica un mensaje de eco ICMP (Protocolo de mensajes de control de Internet) al equipo especificado y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the specified computer, and receive a corresponding ICMP echo reply message from that computer.

SendAsync(IPAddress, Object) SendAsync(IPAddress, Object) SendAsync(IPAddress, Object) SendAsync(IPAddress, Object)

Intenta enviar de forma asincrónica un mensaje de eco ICMP (Protocolo de mensajes de control de Internet) al equipo que tiene la IPAddress especificada y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer.

SendAsync(String, Int32, Object) SendAsync(String, Int32, Object) SendAsync(String, Int32, Object) SendAsync(String, Int32, Object)

Intenta enviar de forma asincrónica un mensaje de eco ICMP (Protocolo de mensajes de control de Internet) al equipo especificado y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the specified computer, and receive a corresponding ICMP echo reply message from that computer. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación.This overload allows you to specify a time-out value for the operation.

Comentarios

Estos métodos no hacen que el subproceso principal de la aplicación se bloquee.These methods do not cause your application's main thread to block. Si desea bloquear mientras espera para el mensaje de respuesta de eco ICMP, utilice el Send métodos.If you want to block while waiting for the ICMP echo reply message, use the Send methods.

Nota

La dirección IP devuelta por cualquiera de los SendAsync métodos pueden originarse en un equipo remoto malintencionado.The IP address returned by any of the SendAsync methods can originate from a malicious remote computer. No se conectan al equipo remoto con este.Do not connect to the remote computer using this. Usar DNS para determinar la dirección IP de la máquina a la que desea conectarse.Use DNS to determine the IP address of the machine to which you want to connect.

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

De forma asincrónica, intenta enviar un mensaje de eco ICMP (Protocolo de mensajes de control de Internet) con el búfer de datos especificado al equipo especificado, y recibir el correspondiente mensaje de respuesta de eco ICMP de ese equipo.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the specified computer, and receive a corresponding ICMP echo reply message from that computer. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación y controlar los valores de Período de vida y fragmentación para el paquete ICMP.This overload allows you to specify a time-out value for the operation and control fragmentation and Time-to-Live values for the ICMP packet.

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);
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 String String String

String que identifica el equipo de destino para el mensaje de eco ICMP.A String that identifies the computer that is the destination for the ICMP echo message. El valor especificado para este parámetro puede ser un nombre de host o una representación de cadena de una dirección IP.The value specified for this parameter can be a host name or a string representation of an IP address.

timeout
Int32 Int32 Int32 Int32

Matriz de Byte que contiene los datos que se envían con el mensaje de eco ICMP y se devuelven en el mensaje de respuesta de eco ICMP.A Byte array that contains data to be sent with the ICMP echo message and returned in the ICMP echo reply message. La matriz no puede contener más de 65.500 bytes.The array cannot contain more than 65,500 bytes.

buffer
Byte[]

Valor Int32 que especifica el número máximo de milisegundos (después de enviar el mensaje de eco) que hay que esperar hasta recibir el mensaje de respuesta de eco ICMP.An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.

options
PingOptions PingOptions PingOptions PingOptions

Objeto PingOptions que se usa para controlar los valores de Período de vida y fragmentación del paquete de mensaje de eco ICMP.A PingOptions object used to control fragmentation and Time-to-Live values for the ICMP echo message packet.

userToken
Object Object Object Object

Objeto que se pasa al método invocado cuando la operación asincrónica termina.An object that is passed to the method invoked when the asynchronous operation completes.

Excepciones

hostNameOrAddress es null o una cadena vacía ("").hostNameOrAddress is null or is an empty string ("").

O bien-or- buffer es null.buffer is null.

address es una dirección IPv6 y el equipo local está ejecutando un sistema operativo anterior a Windows 2000.address is an IPv6 address and the local computer is running an operating system earlier than Windows 2000.

Se ha producido una excepción al enviar o recibir los mensajes ICMP.An exception was thrown while sending or receiving the ICMP messages. Para conocer la excepción exacta que se produjo, vea la excepción interna.See the inner exception for the exact exception that was thrown.

hostNameOrAddress no pudo resolverse en una dirección IP válida.hostNameOrAddress could not be resolved to a valid IP address.

Este objeto se ha eliminado.This object has been disposed.

El tamaño de buffer es superior a 65.500 bytes.The size of buffer exceeds 65500 bytes.

Ejemplos

En el ejemplo de código siguiente se muestra cómo llamar a este método.The following code example demonstrates how to call this method.

#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);
            }
        }
    }
}

Comentarios

El SendAsync método envía el mensaje de eco de forma asincrónica y, cuando se completa la operación (correctamente o no), devuelve el estado a la aplicación.The SendAsync method sends the Echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. Llame a la SendAsync método cuando la aplicación no debe bloquearse.Call the SendAsync method when your application must not block. Cada llamada se ejecuta en un subproceso independiente que se asigna automáticamente desde el grupo de subprocesos.Each call executes in a separate thread that is automatically allocated from the thread pool. Cuando se complete la operación asincrónica, se genera el PingCompleted eventos.When the asynchronous operation completes, it raises the PingCompleted event. Las aplicaciones utilizan un PingCompletedEventHandler delegado para especificar el método que se llama cuando SendAsync provoca el evento.Applications use a PingCompletedEventHandler delegate to specify the method that is called when SendAsync raises the event. Debe agregar un PingCompletedEventHandler delegado al evento antes de llamar a SendAsync.You must add a PingCompletedEventHandler delegate to the event before calling SendAsync. El método del delegado recibe un PingCompletedEventArgs objeto que contiene un PingReply objeto que describe el resultado de la SendAsync llamar.The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. El PingCompletedEventArgs objeto hereda el UserState propiedad.The PingCompletedEventArgs object inherits the UserState property. Esta propiedad contiene el userToken objeto pasado en el SendAsync llamar.This property contains the userToken object passed into the SendAsync call.

Si la aplicación debe bloquearse mientras espera una respuesta, utilice el Send métodos; estos métodos son sincrónicos.If your application should block while waiting for a reply, use the Send methods; these methods are synchronous.

Si no se recibe el mensaje de respuesta de eco ICMP en el tiempo especificado por el timeout parámetro, el eco ICMP se produce un error y el Status propiedad está establecida en TimedOut.If the ICMP echo reply message is not received within the time specified by the timeout parameter, the ICMP echo fails, and the Status property is set to TimedOut.

Nota

Al especificar un número muy reducido para timeout, puede recibir la respuesta de Ping aunque timeout milisegundos transcurridos.When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.

Si el DontFragment propiedad es true y el tamaño total del paquete supera el tamaño máximo de paquetes que se puede transmitir mediante uno de los nodos de enrutamiento entre los equipos locales y remotos, se produce un error en la solicitud de eco ICMP.If the DontFragment property is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. Cuando esto sucede, el Status está establecido en PacketTooBig.When this happens, the Status is set to PacketTooBig.

Use el Ttl propiedad para especificar el número máximo de veces que se puede reenviar el mensaje de eco ICMP antes de llegar a su destino.Use the Ttl property to specify the maximum number of times the ICMP echo message can be forwarded before reaching its destination. Si el paquete no llega a su destino después de que se reenvían el número de veces especificado, el paquete se descarta y se produce un error en la solicitud de eco ICMP.If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. Cuando esto sucede, el Status está establecido en TtlExpired.When this happens, the Status is set to TtlExpired.

Seguridad

NetworkInformationPermission
Para enviar un mensaje de eco ICMP.To send an ICMP echo message. Enumeración asociada: PingAssociated enumeration: Ping

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

De forma asincrónica, intenta enviar un mensaje de eco ICMP (Protocolo de mensajes de control de Internet) con el búfer de datos especificado al equipo que tiene la IPAddress especificada, y recibir el correspondiente mensaje de respuesta de eco ICMP de ese equipo.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación y controlar los valores de Período de vida y fragmentación para el paquete del mensaje de eco ICMP.This overload allows you to specify a time-out value for the operation and control fragmentation and Time-to-Live values for the ICMP echo message packet.

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);
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 IPAddress IPAddress IPAddress

IPAddress que identifica el equipo de destino para el mensaje de eco ICMP.An IPAddress that identifies the computer that is the destination for the ICMP echo message.

timeout
Int32 Int32 Int32 Int32

Valor Int32 que especifica el número máximo de milisegundos (después de enviar el mensaje de eco) que hay que esperar hasta recibir el mensaje de respuesta de eco ICMP.An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.

buffer
Byte[]

Matriz de Byte que contiene los datos que se envían con el mensaje de eco ICMP y se devuelven en el mensaje de respuesta de eco ICMP.A Byte array that contains data to be sent with the ICMP echo message and returned in the ICMP echo reply message. La matriz no puede contener más de 65.500 bytes.The array cannot contain more than 65,500 bytes.

options
PingOptions PingOptions PingOptions PingOptions

Objeto PingOptions que se usa para controlar los valores de Período de vida y fragmentación del paquete de mensaje de eco ICMP.A PingOptions object used to control fragmentation and Time-to-Live values for the ICMP echo message packet.

userToken
Object Object Object Object

Objeto que se pasa al método invocado cuando la operación asincrónica termina.An object that is passed to the method invoked when the asynchronous operation completes.

Excepciones

address es null.address is null.

O bien-or- buffer es null.buffer is null.

address es una dirección IPv6 y el equipo local está ejecutando un sistema operativo anterior a Windows 2000.address is an IPv6 address and the local computer is running an operating system earlier than Windows 2000.

Se ha producido una excepción al enviar o recibir los mensajes ICMP.An exception was thrown while sending or receiving the ICMP messages. Para conocer la excepción exacta que se produjo, vea la excepción interna.See the inner exception for the exact exception that was thrown.

El valor de address no es una dirección IP válida.address is not a valid IP address.

Este objeto se ha eliminado.This object has been disposed.

El tamaño de buffer es superior a 65.500 bytes.The size of buffer exceeds 65500 bytes.

Ejemplos

En el ejemplo de código siguiente se muestra cómo llamar a este método.The following code example demonstrates how to call this method. Para una implementación del método de devolución de llamada, vea la SendAsync sección de ejemplo de sobrecarga del método.For an implementation of the callback method, see the SendAsync method overload example section.

El siguiente ejemplo de código requiere los siguientes espacios de nombres:The following code example requires the following 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;

En el ejemplo de código siguiente se envía un mensaje de eco ICMP de forma asincrónica.The following code example sends an ICMP echo message asynchronously.

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.");
}

Comentarios

El SendAsync método envía el mensaje de eco de forma asincrónica y, cuando se completa la operación (correctamente o no), devuelve el estado a la aplicación.The SendAsync method sends the Echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. Llame a la SendAsync método cuando la aplicación no debe bloquearse.Call the SendAsync method when your application must not block. Cada llamada se ejecuta en un subproceso independiente que se asigna automáticamente desde el grupo de subprocesos.Each call executes in a separate thread that is automatically allocated from the thread pool. Cuando se complete la operación asincrónica, se genera el PingCompleted eventos.When the asynchronous operation completes, it raises the PingCompleted event. Las aplicaciones utilizan un PingCompletedEventHandler delegado para especificar el método que se llama cuando SendAsync provoca el evento.Applications use a PingCompletedEventHandler delegate to specify the method that is called when SendAsync raises the event. Debe agregar un PingCompletedEventHandler delegado al evento antes de llamar a SendAsync.You must add a PingCompletedEventHandler delegate to the event before calling SendAsync. El método del delegado recibe un PingCompletedEventArgs objeto que contiene un PingReply objeto que describe el resultado de la SendAsync llamar.The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. El PingCompletedEventArgs objeto hereda el UserState propiedad.The PingCompletedEventArgs object inherits the UserState property. Esta propiedad contiene el userToken objeto pasado en el SendAsync llamar.This property contains the userToken object passed into the SendAsync call.

Si la aplicación se bloquea mientras espera una respuesta, utilice el Send métodos; estos métodos son sincrónicos.If your application blocks while waiting for a reply, use the Send methods; these methods are synchronous.

Si no se recibe el mensaje de respuesta de eco ICMP en el tiempo especificado por el timeout parámetro, el eco ICMP se produce un error y el Status propiedad está establecida en TimedOut.If the ICMP echo reply message is not received within the time specified by the timeout parameter, the ICMP echo fails, and the Status property is set to TimedOut.

Nota

Al especificar un número muy reducido para timeout, puede recibir la respuesta de Ping aunque timeout milisegundos transcurridos.When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.

Si el DontFragment propiedad es true y el tamaño total del paquete supera el tamaño máximo de paquetes que se puede transmitir mediante uno de los nodos de enrutamiento entre los equipos locales y remotos, se produce un error en la solicitud de eco ICMP.If the DontFragment property is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. Cuando esto sucede, el Status está establecido en PacketTooBig.When this happens, the Status is set to PacketTooBig.

Use el Ttl propiedad para especificar el número máximo de veces que se puede reenviar el mensaje de eco ICMP antes de llegar a su destino.Use the Ttl property to specify the maximum number of times the ICMP echo message can be forwarded before reaching its destination. Si el paquete no llega a su destino después de que se reenvían el número de veces especificado, el paquete se descarta y se produce un error en la solicitud de eco ICMP.If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. Cuando esto sucede, el Status está establecido en TtlExpired.When this happens, the Status is set to TtlExpired.

Seguridad

NetworkInformationPermission
Para enviar un mensaje de eco ICMP.To send an ICMP echo message. Enumeración asociada: PingAssociated enumeration: Ping

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

De forma asincrónica, intenta enviar un mensaje de eco ICMP (Protocolo de mensajes de control de Internet) con el búfer de datos especificado al equipo especificado, y recibir el correspondiente mensaje de respuesta de eco ICMP de ese equipo.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the specified computer, and receive a corresponding ICMP echo reply message from that computer. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación.This overload allows you to specify a time-out value for the operation.

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);
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 String String String

String que identifica el equipo de destino para el mensaje de eco ICMP.A String that identifies the computer that is the destination for the ICMP echo message. El valor especificado para este parámetro puede ser un nombre de host o una representación de cadena de una dirección IP.The value specified for this parameter can be a host name or a string representation of an IP address.

timeout
Int32 Int32 Int32 Int32

Valor Int32 que especifica el número máximo de milisegundos (después de enviar el mensaje de eco) que hay que esperar hasta recibir el mensaje de respuesta de eco ICMP.An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.

buffer
Byte[]

Matriz de Byte que contiene los datos que se envían con el mensaje de eco ICMP y se devuelven en el mensaje de respuesta de eco ICMP.A Byte array that contains data to be sent with the ICMP echo message and returned in the ICMP echo reply message. La matriz no puede contener más de 65.500 bytes.The array cannot contain more than 65,500 bytes.

userToken
Object Object Object Object

Objeto que se pasa al método invocado cuando la operación asincrónica termina.An object that is passed to the method invoked when the asynchronous operation completes.

Excepciones

hostNameOrAddress es null o una cadena vacía ("").hostNameOrAddress is null or is an empty string ("").

O bien-or- buffer es null.buffer is null.

hostNameOrAddress es una dirección IPv6 y el equipo local está ejecutando un sistema operativo anterior a Windows 2000.hostNameOrAddress is an IPv6 address and the local computer is running an operating system earlier than Windows 2000.

Se ha producido una excepción al enviar o recibir los mensajes ICMP.An exception was thrown while sending or receiving the ICMP messages. Para conocer la excepción exacta que se produjo, vea la excepción interna.See the inner exception for the exact exception that was thrown.

hostNameOrAddress no pudo resolverse en una dirección IP válida.hostNameOrAddress could not be resolved to a valid IP address.

Este objeto se ha eliminado.This object has been disposed.

El tamaño de buffer es superior a 65.500 bytes.The size of buffer exceeds 65500 bytes.

Ejemplos

En el ejemplo de código siguiente se muestra cómo llamar a un SendAsync sobrecarga, vea el Ping información general de clases.The following code example demonstrates how to call a SendAsync overload, see the Ping class overview.

Comentarios

El SendAsync método envía el mensaje de eco de forma asincrónica y, cuando se completa la operación (correctamente o no), devuelve el estado a la aplicación.The SendAsync method sends the Echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. Llame a la SendAsync método cuando la aplicación no debe bloquearse.Call the SendAsync method when your application should not block. Cada llamada se ejecuta en un subproceso independiente que se asigna automáticamente desde el grupo de subprocesos.Each call executes in a separate thread that is automatically allocated from the thread pool. Cuando se complete la operación asincrónica, se genera el PingCompleted eventos.When the asynchronous operation completes, it raises the PingCompleted event. Las aplicaciones utilizan un PingCompletedEventHandler delegado para especificar el método que se llama cuando SendAsync provoca el evento.Applications use a PingCompletedEventHandler delegate to specify the method that is called when SendAsync raises the event. Debe agregar un PingCompletedEventHandler delegado al evento antes de llamar a SendAsync.You must add a PingCompletedEventHandler delegate to the event before calling SendAsync. El método del delegado recibe un PingCompletedEventArgs objeto que contiene un PingReply objeto que describe el resultado de la SendAsync llamar.The delegate's method receives a PingCompletedEventArgs object containing a PingReply object that describes the result of the SendAsync call. El PingCompletedEventArgs objeto hereda el UserState propiedad.The PingCompletedEventArgs object inherits the UserState property. Esta propiedad contiene el userToken objeto pasado en el SendAsync llamar.This property contains the userToken object passed into the SendAsync call.

Si la aplicación debe bloquearse mientras espera una respuesta, utilice el Send métodos; estos métodos son sincrónicos.If your application should block while waiting for a reply, use the Send methods; these methods are synchronous.

Si no se recibe el mensaje de respuesta de eco ICMP en el tiempo especificado por el timeout parámetro, el eco ICMP se produce un error y el Status propiedad está establecida en TimedOut.If the ICMP echo reply message is not received within the time specified by the timeout parameter, the ICMP echo fails, and the Status property is set to TimedOut.

Nota

Al especificar un número muy reducido para timeout, puede recibir la respuesta de Ping aunque timeout milisegundos transcurridos.When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.

Esta sobrecarga utiliza la configuración predeterminada para la fragmentación y el reenvío de paquetes.This overload uses default settings for packet fragmentation and packet forwarding. El paquete que contiene el mensaje de eco ICMP se puede fragmentar en tránsito si el tamaño total del paquete supera el tamaño máximo de paquetes que se puede transmitir mediante uno de los nodos de enrutamiento entre los equipos locales y remotos.The packet that contains the ICMP echo message can be fragmented in transit if the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers. Para evitar la fragmentación, utilice uno de los SendAsync métodos que toma un options parámetro y establezca el DontFragment propiedad true.To prevent fragmentation, use one of the SendAsync methods that takes an options parameter, and set the DontFragment property to true. Cuando DontFragment es true y el tamaño total del paquete supera el tamaño máximo de paquetes que se puede transmitir mediante uno de los nodos de enrutamiento entre los equipos locales y remotos, se produce un error en la solicitud de eco ICMP.When DontFragment is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. Cuando esto sucede, el Status está establecido en PacketTooBig.When this happens, the Status is set to PacketTooBig. El paquete o sus fragmentos (si está fragmentado) pueden ser reenviados por nodos de enrutamiento 128 veces antes de descartarse.The packet or packet fragments (if fragmented) can be forwarded by routing nodes 128 times before being discarded. Para cambiar esta configuración, use un SendAsync sobrecarga que toma un options parámetro y establezca el Ttl propiedad en el valor deseado.To change this setting, use a SendAsync overload that takes an options parameter, and set the Ttl property to the desired value. Si el paquete no llega a su destino después de que se reenvían el número de veces especificado, el paquete se descarta y se produce un error en la solicitud de eco ICMP.If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. Cuando esto sucede, el Status está establecido en TtlExpired.When this happens, the Status is set to TtlExpired.

Seguridad

NetworkInformationPermission
Para enviar un mensaje de eco ICMP.To send an ICMP echo message. Enumeración asociada: PingAssociated enumeration: Ping

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

De forma asincrónica, intenta enviar un mensaje de eco ICMP (Protocolo de mensajes de control de Internet) con el búfer de datos especificado al equipo que tiene la IPAddress especificada, y recibir el correspondiente mensaje de respuesta de eco ICMP de ese equipo.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación.This overload allows you to specify a time-out value for the operation.

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);
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 IPAddress IPAddress IPAddress

IPAddress que identifica el equipo de destino para el mensaje de eco ICMP.An IPAddress that identifies the computer that is the destination for the ICMP echo message.

timeout
Int32 Int32 Int32 Int32

Valor Int32 que especifica el número máximo de milisegundos (después de enviar el mensaje de eco) que hay que esperar hasta recibir el mensaje de respuesta de eco ICMP.An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.

buffer
Byte[]

Matriz de Byte que contiene los datos que se envían con el mensaje de eco ICMP y se devuelven en el mensaje de respuesta de eco ICMP.A Byte array that contains data to be sent with the ICMP echo message and returned in the ICMP echo reply message. La matriz no puede contener más de 65.500 bytes.The array cannot contain more than 65,500 bytes.

userToken
Object Object Object Object

Objeto que se pasa al método invocado cuando la operación asincrónica termina.An object that is passed to the method invoked when the asynchronous operation completes.

Excepciones

address es null.address is null.

O bien-or- buffer es null.buffer is null.

address es una dirección IPv6 y el equipo local está ejecutando un sistema operativo anterior a Windows 2000.address is an IPv6 address and the local computer is running an operating system earlier than Windows 2000.

Se ha producido una excepción al enviar o recibir los mensajes ICMP.An exception was thrown while sending or receiving the ICMP messages. Para conocer la excepción exacta que se produjo, vea la excepción interna.See the inner exception for the exact exception that was thrown.

El valor de address no es una dirección IP válida.address is not a valid IP address.

Este objeto se ha eliminado.This object has been disposed.

El tamaño de buffer es superior a 65.500 bytes.The size of buffer exceeds 65500 bytes.

Ejemplos

Para obtener un ejemplo de código que se muestra cómo llamar un SendAsync sobrecarga, vea el Ping información general de clases.For a code example that demonstrates calling a SendAsync overload, see the Ping class overview.

Comentarios

Este método envía el mensaje de eco de forma asincrónica y, cuando se completa la operación (correctamente o no), devuelve el estado a la aplicación.This method sends the echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. Llame a la SendAsync método cuando la aplicación no debe bloquearse.Call the SendAsync method when your application should not block. Cada llamada se ejecuta en un subproceso independiente que se asigna automáticamente desde el grupo de subprocesos.Each call executes in a separate thread that is automatically allocated from the thread pool. Cuando se complete la operación asincrónica, se genera el PingCompleted eventos.When the asynchronous operation completes, it raises the PingCompleted event. Para especificar el método que se llama cuando SendAsync provoca el evento, debe agregar un PingCompletedEventHandler delegado al evento antes de llamar a SendAsync.To specify the method that is called when SendAsync raises the event, you must add a PingCompletedEventHandler delegate to the event before calling SendAsync. El método del delegado recibe un PingCompletedEventArgs objeto que contiene un PingReply objeto que describe el resultado de la SendAsync llamar.The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. El PingCompletedEventArgs objeto hereda el UserState propiedad.The PingCompletedEventArgs object inherits the UserState property. Esta propiedad contiene el userToken objeto pasado en el SendAsync llamar.This property contains the userToken object passed into the SendAsync call.

Nota

Si la aplicación se bloquea mientras espera una respuesta, utilice el Send métodos; estos métodos son sincrónicos.If your application blocks while waiting for a reply, use the Send methods; these methods are synchronous.

Si no se recibe el mensaje de respuesta de eco ICMP en el tiempo especificado por el timeout parámetro, el eco ICMP se produce un error y el Status propiedad está establecida en TimedOut.If the ICMP echo reply message is not received within the time specified by the timeout parameter, the ICMP echo fails, and the Status property is set to TimedOut.

Nota

Al especificar un número muy reducido para timeout, puede recibir la respuesta de Ping aunque timeout milisegundos transcurridos.When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.

Esta sobrecarga utiliza la configuración predeterminada para la fragmentación y el reenvío de paquetes.This overload uses default settings for packet fragmentation and packet forwarding. El paquete que contiene el mensaje de eco ICMP se puede fragmentar en tránsito si el tamaño total del paquete supera el tamaño máximo de paquetes que se puede transmitir mediante uno de los nodos de enrutamiento entre los equipos locales y remotos.The packet that contains the ICMP echo message can be fragmented in transit if the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers. Para evitar la fragmentación, utilice uno de los SendAsync métodos que toma un options parámetro y establezca el DontFragment propiedad true.To prevent fragmentation, use one of the SendAsync methods that takes an options parameter, and set the DontFragment property to true. Cuando DontFragment es true y el tamaño total del paquete supera el tamaño máximo de paquetes que se puede transmitir mediante uno de los nodos de enrutamiento entre los equipos locales y remotos, se produce un error en la solicitud de eco ICMP.When DontFragment is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. Cuando esto sucede, el Status está establecido en PacketTooBig.When this happens, the Status is set to PacketTooBig. El paquete o sus fragmentos (si está fragmentado) pueden ser reenviados por nodos de enrutamiento 128 veces antes de descartarse.The packet or packet fragments (if fragmented) can be forwarded by routing nodes 128 times before being discarded. Para cambiar esta configuración, use un SendAsync sobrecarga que toma un options parámetro y establezca el Ttl propiedad en el valor deseado.To change this setting, use a SendAsync overload that takes an options parameter, and set the Ttl property to the desired value. Si el paquete no llega a su destino después de que se reenvían el número de veces especificado, el paquete se descarta y se produce un error en la solicitud de eco ICMP.If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. Cuando esto sucede, el Status está establecido en TtlExpired.When this happens, the Status is set to TtlExpired.

Seguridad

NetworkInformationPermission
Para enviar un mensaje de eco ICMP.To send an ICMP echo message. Enumeración asociada: PingAssociated enumeration: Ping

SendAsync(IPAddress, Int32, Object) SendAsync(IPAddress, Int32, Object) SendAsync(IPAddress, Int32, Object) SendAsync(IPAddress, Int32, Object)

Intenta enviar de forma asincrónica un mensaje de eco ICMP (Protocolo de mensajes de control de Internet) al equipo que tiene la IPAddress especificada y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación.This overload allows you to specify a time-out value for the operation.

public:
 void SendAsync(System::Net::IPAddress ^ address, int timeout, System::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 IPAddress IPAddress IPAddress

IPAddress que identifica el equipo de destino para el mensaje de eco ICMP.An IPAddress that identifies the computer that is the destination for the ICMP echo message.

timeout
Int32 Int32 Int32 Int32

Valor Int32 que especifica el número máximo de milisegundos (después de enviar el mensaje de eco) que hay que esperar hasta recibir el mensaje de respuesta de eco ICMP.An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.

userToken
Object Object Object Object

Objeto que se pasa al método invocado cuando la operación asincrónica termina.An object that is passed to the method invoked when the asynchronous operation completes.

Excepciones

address es una dirección IPv6 y el equipo local está ejecutando un sistema operativo anterior a Windows 2000.address is an IPv6 address and the local computer is running an operating system earlier than Windows 2000.

Se ha producido una excepción al enviar o recibir los mensajes ICMP.An exception was thrown while sending or receiving the ICMP messages. Para conocer la excepción exacta que se produjo, vea la excepción interna.See the inner exception for the exact exception that was thrown.

El valor de address no es una dirección IP válida.address is not a valid IP address.

Este objeto se ha eliminado.This object has been disposed.

Ejemplos

Para obtener un ejemplo de código que se muestra cómo llamar un SendAsync sobrecarga, vea el Ping información general de clases.For a code example that demonstrates calling a SendAsync overload, see the Ping class overview.

Comentarios

El SendAsync método envía el mensaje de eco de forma asincrónica y, cuando se completa la operación (correctamente o no), devuelve el estado a la aplicación.The SendAsync method sends the Echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. Llame a la SendAsync método cuando la aplicación no debe bloquearse.Call the SendAsync method when your application should not block. Cada llamada se ejecuta en un subproceso independiente que se asigna automáticamente desde el grupo de subprocesos.Each call executes in a separate thread that is automatically allocated from the thread pool. Cuando se complete la operación asincrónica, se genera el PingCompleted eventos.When the asynchronous operation completes, it raises the PingCompleted event. Las aplicaciones utilizan un PingCompletedEventHandler delegado para especificar el método que se llama cuando SendAsync provoca el evento.Applications use a PingCompletedEventHandler delegate to specify the method that is called when SendAsync raises the event. Debe agregar un PingCompletedEventHandler delegado al evento antes de llamar a SendAsync.You must add a PingCompletedEventHandler delegate to the event before calling SendAsync. El método del delegado recibe un PingCompletedEventArgs objeto que contiene un PingReply objeto que describe el resultado de la SendAsync llamar.The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. El PingCompletedEventArgs objeto hereda el UserState propiedad.The PingCompletedEventArgs object inherits the UserState property. Esta propiedad contiene el userToken objeto pasado en el SendAsync llamar.This property contains the userToken object passed into the SendAsync call.

Si la aplicación debe bloquearse mientras espera una respuesta, utilice el Send métodos; estos métodos son sincrónicos.If your application should block while waiting for a reply, use the Send methods; these methods are synchronous.

Si no se recibe el mensaje de respuesta de eco ICMP en el tiempo especificado por el timeout parámetro, el eco ICMP se produce un error y el Status propiedad está establecida en TimedOut.If the ICMP echo reply message is not received within the time specified by the timeout parameter, the ICMP echo fails, and the Status property is set to TimedOut.

Nota

Al especificar un número muy reducido para timeout, puede recibir la respuesta de Ping aunque timeout milisegundos transcurridos.When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.

Esta sobrecarga utiliza la configuración predeterminada para la fragmentación y el reenvío de paquetes.This overload uses default settings for packet fragmentation and packet forwarding. El paquete que contiene el mensaje de eco ICMP se puede fragmentar en tránsito si el tamaño total del paquete supera el tamaño máximo de paquetes que se puede transmitir mediante uno de los nodos de enrutamiento entre los equipos locales y remotos.The packet that contains the ICMP echo message can be fragmented in transit if the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers. Para evitar la fragmentación, utilice uno de los SendAsync métodos que toma un options parámetro y establezca el DontFragment propiedad true.To prevent fragmentation, use one of the SendAsync methods that takes an options parameter, and set the DontFragment property to true. Cuando DontFragment es true y el tamaño total del paquete supera el tamaño máximo de paquetes que se puede transmitir mediante uno de los nodos de enrutamiento entre los equipos locales y remotos, se produce un error en la solicitud de eco ICMP.When DontFragment is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. Cuando esto sucede, el Status está establecido en PacketTooBig.When this happens, the Status is set to PacketTooBig. El paquete o sus fragmentos (si está fragmentado) pueden ser reenviados por nodos de enrutamiento 128 veces antes de descartarse.The packet or packet fragments (if fragmented) can be forwarded by routing nodes 128 times before being discarded. Para cambiar esta configuración, use un SendAsync sobrecarga que toma un options parámetro y establezca el Ttl propiedad en el valor deseado.To change this setting, use a SendAsync overload that takes an options parameter, and set the Ttl property to the desired value. Si el paquete no llega a su destino después de que se reenvían el número de veces especificado, el paquete se descarta y se produce un error en la solicitud de eco ICMP.If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. Cuando esto sucede, el Status está establecido en TtlExpired.When this happens, the Status is set to TtlExpired.

Seguridad

NetworkInformationPermission
Para enviar un mensaje de eco ICMP.To send an ICMP echo message. Enumeración asociada: PingAssociated enumeration: Ping

SendAsync(String, Object) SendAsync(String, Object) SendAsync(String, Object) SendAsync(String, Object)

Intenta enviar de forma asincrónica un mensaje de eco ICMP (Protocolo de mensajes de control de Internet) al equipo especificado y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the specified computer, and receive a corresponding ICMP echo reply message from that computer.

public:
 void SendAsync(System::String ^ hostNameOrAddress, System::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 String String String

String que identifica el equipo de destino para el mensaje de eco ICMP.A String that identifies the computer that is the destination for the ICMP echo message. El valor especificado para este parámetro puede ser un nombre de host o una representación de cadena de una dirección IP.The value specified for this parameter can be a host name or a string representation of an IP address.

userToken
Object Object Object Object

Objeto que se pasa al método invocado cuando la operación asincrónica termina.An object that is passed to the method invoked when the asynchronous operation completes.

Excepciones

hostNameOrAddress es null o una cadena vacía ("").hostNameOrAddress is null or is an empty string ("").

address es una dirección IPv6 y el equipo local está ejecutando un sistema operativo anterior a Windows 2000.address is an IPv6 address and the local computer is running an operating system earlier than Windows 2000.

Se ha producido una excepción al enviar o recibir los mensajes ICMP.An exception was thrown while sending or receiving the ICMP messages. Para conocer la excepción exacta que se produjo, vea la excepción interna.See the inner exception for the exact exception that was thrown.

hostNameOrAddress no pudo resolverse en una dirección IP válida.hostNameOrAddress could not be resolved to a valid IP address.

Este objeto se ha eliminado.This object has been disposed.

Ejemplos

Para obtener un ejemplo de código que se muestra cómo llamar el SendAsync método, consulte el Ping información general de clases.For a code example that demonstrates calling the SendAsync method, see the Ping class overview.

Comentarios

El SendAsync método envía el mensaje de eco de forma asincrónica y, cuando se completa la operación (correctamente o no), devuelve el estado a la aplicación.The SendAsync method sends the echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. Llame a la SendAsync método cuando la aplicación no debe bloquearse.Call the SendAsync method when your application should not block. Cada llamada a este método se ejecuta en un subproceso independiente que se asigna automáticamente desde el grupo de subprocesos.Each call to this method executes in a separate thread that is automatically allocated from the thread pool. Cuando se complete la operación asincrónica, se genera el PingCompleted eventos.When the asynchronous operation completes, it raises the PingCompleted event. Para especificar el método que se llama cuando SendAsync provoca el evento, debe agregar un PingCompletedEventHandler delegado al evento antes de llamar a SendAsync.To specify the method that is called when SendAsync raises the event, you must add a PingCompletedEventHandler delegate to the event before calling SendAsync. El método del delegado recibe un PingCompletedEventArgs objeto que contiene un PingReply objeto que describe el resultado de la SendAsync llamar.The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. El PingCompletedEventArgs objeto hereda el UserState propiedad.The PingCompletedEventArgs object inherits the UserState property. Esta propiedad contiene el userToken objeto pasado en el SendAsync llamar.This property contains the userToken object passed into the SendAsync call.

Nota

Si la aplicación debe bloquearse mientras espera una respuesta, utilice el Send métodos; estos métodos son sincrónicos.If your application should block while waiting for a reply, use the Send methods; these methods are synchronous.

Este método envía un 32 Byte búfer de datos con el mensaje de eco ICMP.This method sends a 32 Byte data buffer with the ICMP echo message. El método espera cinco segundos para un mensaje de respuesta de eco ICMP.The method waits five seconds for an ICMP echo reply message. Si no recibe una respuesta en ese momento, el método devuelve y la Status propiedad está establecida en TimedOut.If it does not receive a reply in that time the method returns and the Status property is set to TimedOut.

Esta sobrecarga utiliza la configuración predeterminada para la fragmentación y el reenvío de paquetes.This overload uses default settings for packet fragmentation and packet forwarding. El paquete que contiene el mensaje de eco ICMP se puede fragmentar en tránsito si el tamaño total del paquete supera el tamaño máximo de paquetes que se puede transmitir mediante uno de los nodos de enrutamiento entre los equipos locales y remotos.The packet that contains the ICMP echo message can be fragmented in transit if the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers. Para evitar la fragmentación, utilice uno de los SendAsync métodos que toma un options parámetro y establezca el DontFragment propiedad true.To prevent fragmentation, use one of the SendAsync methods that takes an options parameter, and set the DontFragment property to true. Cuando DontFragment es true y el tamaño total del paquete supera el tamaño máximo de paquetes que se puede transmitir mediante uno de los nodos de enrutamiento entre los equipos locales y remotos, se produce un error en la solicitud de eco ICMP.When DontFragment is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. Cuando esto sucede, el Status está establecido en PacketTooBig.When this happens, the Status is set to PacketTooBig.

El paquete o sus fragmentos pueden reenviar mediante nodos de enrutamiento 128 veces antes de descartarse.The packet or packet fragments can be forwarded by routing nodes 128 times before being discarded. Para cambiar esta configuración, use un SendAsync sobrecarga que toma un options parámetro y establezca el Ttl propiedad en el valor deseado.To change this setting, use a SendAsync overload that takes an options parameter, and set the Ttl property to the desired value. Si el paquete no llega a su destino después de que se reenvían el número de veces especificado, el paquete se descarta y se produce un error en la solicitud de eco ICMP.If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. Cuando esto sucede, el Status está establecido en TtlExpired.When this happens, the Status is set to TtlExpired.

Seguridad

NetworkInformationPermission
Para enviar un mensaje de eco ICMP.To send an ICMP echo message. Enumeración asociada: PingAssociated enumeration: Ping

SendAsync(IPAddress, Object) SendAsync(IPAddress, Object) SendAsync(IPAddress, Object) SendAsync(IPAddress, Object)

Intenta enviar de forma asincrónica un mensaje de eco ICMP (Protocolo de mensajes de control de Internet) al equipo que tiene la IPAddress especificada y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer.

public:
 void SendAsync(System::Net::IPAddress ^ address, System::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 IPAddress IPAddress IPAddress

IPAddress que identifica el equipo de destino para el mensaje de eco ICMP.An IPAddress that identifies the computer that is the destination for the ICMP echo message.

userToken
Object Object Object Object

Objeto que se pasa al método invocado cuando la operación asincrónica termina.An object that is passed to the method invoked when the asynchronous operation completes.

Excepciones

address es una dirección IPv6 y el equipo local está ejecutando un sistema operativo anterior a Windows 2000.address is an IPv6 address and the local computer is running an operating system earlier than Windows 2000.

Se ha producido una excepción al enviar o recibir los mensajes ICMP.An exception was thrown while sending or receiving the ICMP messages. Para conocer la excepción exacta que se produjo, vea la excepción interna.See the inner exception for the exact exception that was thrown.

El valor de address no es una dirección IP válida.address is not a valid IP address.

Este objeto se ha eliminado.This object has been disposed.

Ejemplos

Para obtener un ejemplo de código que se muestra cómo llamar un SendAsync método, consulte el Ping información general de clases.For a code example that demonstrates calling a SendAsync method, see the Ping class overview.

Comentarios

El SendAsync método envía el mensaje de eco de forma asincrónica y, cuando se completa la operación (correctamente o no), devuelve el estado a la aplicación.The SendAsync method sends the echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. Llame a la SendAsync método cuando la aplicación no debe bloquearse.Call the SendAsync method when your application should not block. Cada llamada a este método se ejecuta en un subproceso independiente que se asigna automáticamente desde el grupo de subprocesos.Each call to this method executes in a separate thread that is automatically allocated from the thread pool. Cuando se complete la operación asincrónica, se genera el PingCompleted eventos.When the asynchronous operation completes, it raises the PingCompleted event. Para especificar el método que se llama cuando SendAsync provoca el evento, debe agregar un PingCompletedEventHandler delegado al evento antes de llamar a SendAsync.To specify the method that is called when SendAsync raises the event, you must add a PingCompletedEventHandler delegate to the event before calling SendAsync. El método del delegado recibe un PingCompletedEventArgs objeto que contiene un PingReply objeto que describe el resultado de la SendAsync llamar.The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. El PingCompletedEventArgs objeto hereda el UserState propiedad.The PingCompletedEventArgs object inherits the UserState property. Esta propiedad contiene el userToken objeto pasado en el SendAsync llamar.This property contains the userToken object passed into the SendAsync call.

Nota

Si la aplicación debe bloquearse mientras espera una respuesta, utilice uno de los Send métodos; estos métodos son sincrónicos.If your application should block while waiting for a reply, use one of the Send methods; these methods are synchronous.

Este método envía un 32 Byte búfer de datos con el mensaje de eco ICMP.This method sends a 32 Byte data buffer with the ICMP echo message. El método espera cinco segundos para un mensaje de respuesta de eco ICMP.The method waits five seconds for an ICMP echo reply message. Si no recibe una respuesta en ese momento, el método devuelve y la Status propiedad está establecida en TimedOut.If it does not receive a reply in that time, the method returns and the Status property is set to TimedOut.

Esta sobrecarga utiliza la configuración predeterminada para la fragmentación y el reenvío de paquetes.This overload uses default settings for packet fragmentation and packet forwarding. El paquete que contiene el mensaje de eco ICMP se puede fragmentar en tránsito si el tamaño total del paquete supera el tamaño máximo de paquetes que se puede transmitir mediante uno de los nodos de enrutamiento entre los equipos locales y remotos.The packet that contains the ICMP echo message can be fragmented in transit if the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers. Para evitar la fragmentación, utilice uno de los SendAsync métodos que toma un options parámetro y establezca el DontFragment propiedad true.To prevent fragmentation, use one of the SendAsync methods that takes an options parameter, and set the DontFragment property to true. Cuando DontFragment es true y el tamaño total del paquete supera el tamaño máximo de paquetes que se puede transmitir mediante uno de los nodos de enrutamiento entre los equipos locales y remotos, se produce un error en la solicitud de eco ICMP.When DontFragment is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. Cuando esto sucede, el Status está establecido en PacketTooBig.When this happens, the Status is set to PacketTooBig.

El paquete o sus fragmentos pueden reenviar mediante nodos de enrutamiento 128 veces antes de descartarse.The packet or packet fragments can be forwarded by routing nodes 128 times before being discarded. Para cambiar esta configuración, use un SendAsync sobrecarga que toma un options parámetro y establezca el Ttl propiedad en el valor deseado.To change this setting, use a SendAsync overload that takes an options parameter, and set the Ttl property to the desired value. Si el paquete no llega a su destino después de que se reenvían el número de veces especificado, el paquete se descarta y se produce un error en la solicitud de eco ICMP.If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. Cuando esto sucede, el Status está establecido en TtlExpired.When this happens, the Status is set to TtlExpired.

Seguridad

NetworkInformationPermission
Para enviar un mensaje de eco ICMP.To send an ICMP echo message. Enumeración asociada: PingAssociated enumeration: Ping

SendAsync(String, Int32, Object) SendAsync(String, Int32, Object) SendAsync(String, Int32, Object) SendAsync(String, Int32, Object)

Intenta enviar de forma asincrónica un mensaje de eco ICMP (Protocolo de mensajes de control de Internet) al equipo especificado y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the specified computer, and receive a corresponding ICMP echo reply message from that computer. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación.This overload allows you to specify a time-out value for the operation.

public:
 void SendAsync(System::String ^ hostNameOrAddress, int timeout, System::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 String String String

String que identifica el equipo de destino para el mensaje de eco ICMP.A String that identifies the computer that is the destination for the ICMP echo message. El valor especificado para este parámetro puede ser un nombre de host o una representación de cadena de una dirección IP.The value specified for this parameter can be a host name or a string representation of an IP address.

timeout
Int32 Int32 Int32 Int32

Valor Int32 que especifica el número máximo de milisegundos (después de enviar el mensaje de eco) que hay que esperar hasta recibir el mensaje de respuesta de eco ICMP.An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.

userToken
Object Object Object Object

Objeto que se pasa al método invocado cuando la operación asincrónica termina.An object that is passed to the method invoked when the asynchronous operation completes.

Excepciones

hostNameOrAddress es null o una cadena vacía ("").hostNameOrAddress is null or is an empty string ("").

hostNameOrAddress es una dirección IPv6 y el equipo local está ejecutando un sistema operativo anterior a Windows 2000.hostNameOrAddress is an IPv6 address and the local computer is running an operating system earlier than Windows 2000.

Se ha producido una excepción al enviar o recibir los mensajes ICMP.An exception was thrown while sending or receiving the ICMP messages. Para conocer la excepción exacta que se produjo, vea la excepción interna.See the inner exception for the exact exception that was thrown.

hostNameOrAddress no pudo resolverse en una dirección IP válida.hostNameOrAddress could not be resolved to a valid IP address.

Este objeto se ha eliminado.This object has been disposed.

Ejemplos

Para obtener un ejemplo de código que se muestra cómo llamar el SendAsync método, consulte el Ping información general de clases.For a code example that demonstrates calling the SendAsync method, see the Ping class overview.

Comentarios

El SendAsync método envía el mensaje de eco de forma asincrónica y, cuando se completa la operación (correctamente o no), devuelve el estado a la aplicación.The SendAsync method sends the Echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. Llame a la SendAsync método cuando la aplicación no debe bloquearse.Call the SendAsync method when your application should not block. Cada llamada se ejecuta en un subproceso independiente que se asigna automáticamente desde el grupo de subprocesos.Each call executes in a separate thread that is automatically allocated from the thread pool. Cuando se complete la operación asincrónica, se genera el PingCompleted eventos.When the asynchronous operation completes, it raises the PingCompleted event. Las aplicaciones utilizan un PingCompletedEventHandler delegado para especificar el método que se llama cuando SendAsync provoca el evento.Applications use a PingCompletedEventHandler delegate to specify the method that is called when SendAsync raises the event. Debe agregar un PingCompletedEventHandler delegado al evento antes de llamar a SendAsync.You must add a PingCompletedEventHandler delegate to the event before calling SendAsync. El método del delegado recibe un PingCompletedEventArgs objeto que contiene un PingReply objeto que describe el resultado de la SendAsync llamar.The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. El PingCompletedEventArgs objeto hereda el UserState propiedad.The PingCompletedEventArgs object inherits the UserState property. Esta propiedad contiene el userToken objeto pasado en el SendAsync llamar.This property contains the userToken object passed into the SendAsync call.

Si la aplicación debe bloquearse mientras espera una respuesta, utilice el Send métodos; estos métodos son sincrónicos.If your application should block while waiting for a reply, use the Send methods; these methods are synchronous.

Si no se recibe el mensaje de respuesta de eco ICMP en el tiempo especificado por el timeout parámetro, el eco ICMP se produce un error y el Status propiedad está establecida en TimedOut.If the ICMP echo reply message is not received within the time specified by the timeout parameter, the ICMP echo fails, and the Status property is set to TimedOut.

Nota

Al especificar un número muy reducido para timeout, puede recibir la respuesta de Ping aunque timeout milisegundos transcurridos.When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.

Esta sobrecarga utiliza la configuración predeterminada para la fragmentación y el reenvío de paquetes.This overload uses default settings for packet fragmentation and packet forwarding. El paquete que contiene el mensaje de eco ICMP se puede fragmentar en tránsito si el tamaño total del paquete supera el tamaño máximo de paquetes que se puede transmitir mediante uno de los nodos de enrutamiento entre los equipos locales y remotos.The packet that contains the ICMP echo message can be fragmented in transit if the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers. Para evitar la fragmentación, utilice uno de los SendAsync métodos que toma un options parámetro y establezca el DontFragment propiedad true.To prevent fragmentation, use one of the SendAsync methods that takes an options parameter, and set the DontFragment property to true. Cuando DontFragment es true y el tamaño total del paquete supera el tamaño máximo de paquetes que se puede transmitir mediante uno de los nodos de enrutamiento entre los equipos locales y remotos, se produce un error en la solicitud de eco ICMP.When DontFragment is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. Cuando esto sucede, el Status está establecido en PacketTooBig.When this happens, the Status is set to PacketTooBig. El paquete o sus fragmentos (si está fragmentado) pueden ser reenviados por nodos de enrutamiento 128 veces antes de descartarse.The packet or packet fragments (if fragmented) can be forwarded by routing nodes 128 times before being discarded. Para cambiar esta configuración, use un SendAsync sobrecarga que toma un options parámetro y establezca el Ttl propiedad en el valor deseado.To change this setting, use a SendAsync overload that takes an options parameter, and set the Ttl property to the desired value. Si el paquete no llega a su destino después de que se reenvían el número de veces especificado, el paquete se descarta y se produce un error en la solicitud de eco ICMP.If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. Cuando esto sucede, el Status está establecido en TtlExpired.When this happens, the Status is set to TtlExpired.

Seguridad

NetworkInformationPermission
Para enviar un mensaje de eco ICMP.To send an ICMP echo message. Enumeración asociada: PingAssociated enumeration: Ping

Se aplica a