Ping.SendAsync Méthode

Définition

Essaie d’envoyer un message ICMP d’écho de manière asynchrone à un ordinateur et de recevoir un message ICMP de réponse à écho correspondant de cet ordinateur.

Surcharges

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

Essaie d’envoyer un message ICMP d’écho de manière asynchrone à l’ordinateur spécifié avec le tampon de données spécifié et de recevoir un message ICMP de réponse à écho correspondant de cet ordinateur. Cette surcharge vous permet de spécifier une valeur de délai d’attente pour l’opération et de contrôler la fragmentation et les valeurs de durée de vie pour le paquet ICMP.

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

Essaie d’envoyer un message ICMP d’écho de manière asynchrone avec le tampon de données spécifié à l’ordinateur qui a le IPAddress spécifié et de recevoir un message ICMP de réponse à écho correspondant de cet ordinateur. Cette surcharge vous permet de spécifier une valeur de délai d’attente pour l’opération et de contrôler la fragmentation et les valeurs de durée de vie pour le paquet de message ICMP d’écho.

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

Essaie d’envoyer un message ICMP d’écho de manière asynchrone à l’ordinateur spécifié avec le tampon de données spécifié et de recevoir un message ICMP de réponse à écho correspondant de cet ordinateur. Cette surcharge vous permet de spécifier une valeur de délai pour l’opération.

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

Essaie d’envoyer un message ICMP d’écho de manière asynchrone avec le tampon de données spécifié à l’ordinateur qui a le IPAddress spécifié et de recevoir un message ICMP de réponse à écho correspondant de cet ordinateur. Cette surcharge vous permet de spécifier une valeur de délai pour l’opération.

SendAsync(IPAddress, Int32, Object)

Essaie d’envoyer un message ICMP d’écho de manière asynchrone à l’ordinateur qui a le IPAddress spécifié et de recevoir un message ICMP de réponse à écho correspondant de cet ordinateur. Cette surcharge vous permet de spécifier une valeur de délai pour l’opération.

SendAsync(String, Object)

Essaie d’envoyer un message ICMP d’écho de manière asynchrone à l’ordinateur spécifié et de recevoir un message ICMP de réponse à écho correspondant de cet ordinateur.

SendAsync(IPAddress, Object)

Essaie d’envoyer un message ICMP d’écho de manière asynchrone à l’ordinateur qui a le IPAddress spécifié et de recevoir un message ICMP de réponse à écho correspondant de cet ordinateur.

SendAsync(String, Int32, Object)

Essaie d’envoyer un message ICMP d’écho de manière asynchrone à l’ordinateur spécifié et de recevoir un message ICMP de réponse à écho correspondant de cet ordinateur. Cette surcharge vous permet de spécifier une valeur de délai pour l’opération.

Remarques

Ces méthodes ne bloquent pas le thread main de votre application. Si vous souhaitez bloquer en attendant le message de réponse d’écho ICMP, utilisez les Send méthodes .

Notes

L’adresse IP retournée par l’une SendAsync des méthodes peut provenir d’un ordinateur distant malveillant. Ne vous connectez pas à l’ordinateur distant à l’aide de ceci. Utilisez DNS pour déterminer l’adresse IP de l’ordinateur auquel vous souhaitez vous connecter.

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

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

Essaie d’envoyer un message ICMP d’écho de manière asynchrone à l’ordinateur spécifié avec le tampon de données spécifié et de recevoir un message ICMP de réponse à écho correspondant de cet ordinateur. Cette surcharge vous permet de spécifier une valeur de délai d’attente pour l’opération et de contrôler la fragmentation et les valeurs de durée de vie pour le paquet 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)

Paramètres

hostNameOrAddress
String

String qui identifie l’ordinateur de destination pour le message ICMP d’écho. La valeur spécifiée pour ce paramètre peut être un nom d’hôte ou la représentation sous forme de chaîne d’une adresse IP.

timeout
Int32

Valeur Int32 qui spécifie le nombre maximal de millisecondes (après envoi du message d’écho) d’attente du message ICMP de réponse à écho.

buffer
Byte[]

Tableau Byte qui contient les données à envoyer avec le message ICMP d’écho et à retourner dans le message ICMP de réponse à écho. Le tableau ne peut pas contenir plus de 65 500 octets.

options
PingOptions

Objet PingOptions utilisé pour contrôler la fragmentation et les valeurs de la durée de vie (Time-to-Live) du paquet de messages ICMP d’écho.

userToken
Object

Objet passé à la méthode appelée quand l’opération asynchrone est terminée.

Exceptions

hostNameOrAddress a la valeur null ou est une chaîne vide ("").

-ou-

buffer a la valeur null.

timeout est inférieur à zéro.

Un appel à SendAsync est en cours.

Une exception a été levée lors de l’envoi ou de la réception des messages ICMP. Consultez l’exception interne de l’exception exacte qui a été levée.

hostNameOrAddress n’a pas pu être résolu en adresse IP valide.

Cet objet a été supprimé.

La taille de buffer dépasse 65 500 octets.

.NET 7 et versions ultérieures uniquement sur Linux : le processus n’est pas privilégié et buffer n’est pas vide.

Exemples

L’exemple de code suivant montre comment appeler cette méthode.

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

Remarques

La SendAsync méthode envoie le message Echo de manière asynchrone et, une fois l’opération terminée (avec succès ou échec), retourne le status à votre application. Appelez la SendAsync méthode lorsque votre application ne doit pas bloquer. Chaque appel s’exécute dans un thread distinct qui est automatiquement alloué à partir du pool de threads. Une fois l’opération asynchrone terminée, elle déclenche l’événement PingCompleted . Les applications utilisent un PingCompletedEventHandler délégué pour spécifier la méthode appelée lorsque SendAsync l’événement déclenche. Vous devez ajouter un PingCompletedEventHandler délégué à l’événement avant d’appeler SendAsync. La méthode du délégué reçoit un PingCompletedEventArgs objet qui contient un PingReply objet qui décrit le résultat de l’appel SendAsync . L’objet PingCompletedEventArgs hérite de la UserState propriété . Cette propriété contient l’objet userToken passé dans l’appel SendAsync .

Si votre application doit bloquer en attendant une réponse, utilisez les Send méthodes ; ces méthodes sont synchrones.

Si le message de réponse d’écho ICMP n’est pas reçu dans le délai spécifié par le paramètre, l’écho timeout ICMP échoue et la Status propriété est définie sur TimedOut.

Notes

Lorsque vous spécifiez de très petits nombres pour timeout, la réponse Ping peut être reçue même si timeout des millisecondes se sont écoulées.

Si la DontFragment propriété est true et que la taille totale du paquet dépasse la taille maximale des paquets qui peut être transmise par l’un des nœuds de routage entre les ordinateurs locaux et distants, la demande d’écho ICMP échoue. Dans ce cas, est Status défini sur PacketTooBig.

Utilisez la Ttl propriété pour spécifier le nombre maximal de fois où le message d’écho ICMP peut être transféré avant d’atteindre sa destination. Si le paquet n’atteint pas sa destination après avoir été transféré le nombre de fois spécifié, le paquet est ignoré et la demande d’écho ICMP échoue. Dans ce cas, est Status défini sur TtlExpired.

S’applique à

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

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

Essaie d’envoyer un message ICMP d’écho de manière asynchrone avec le tampon de données spécifié à l’ordinateur qui a le IPAddress spécifié et de recevoir un message ICMP de réponse à écho correspondant de cet ordinateur. Cette surcharge vous permet de spécifier une valeur de délai d’attente pour l’opération et de contrôler la fragmentation et les valeurs de durée de vie pour le paquet de message ICMP d’écho.

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)

Paramètres

address
IPAddress

IPAddress qui identifie l’ordinateur de destination pour le message ICMP d’écho.

timeout
Int32

Valeur Int32 qui spécifie le nombre maximal de millisecondes (après envoi du message d’écho) d’attente du message ICMP de réponse à écho.

buffer
Byte[]

Tableau Byte qui contient les données à envoyer avec le message ICMP d’écho et à retourner dans le message ICMP de réponse à écho. Le tableau ne peut pas contenir plus de 65 500 octets.

options
PingOptions

Objet PingOptions utilisé pour contrôler la fragmentation et les valeurs de la durée de vie (Time-to-Live) du paquet de messages ICMP d’écho.

userToken
Object

Objet passé à la méthode appelée quand l’opération asynchrone est terminée.

Exceptions

address ou buffer est null.

timeout est inférieur à zéro.

Un appel à SendAsync est en cours.

Une exception a été levée lors de l’envoi ou de la réception des messages ICMP. Consultez l’exception interne de l’exception exacte qui a été levée.

address n’est pas une adresse IP valide.

Cet objet a été supprimé.

La taille de buffer dépasse 65 500 octets.

.NET 7 et versions ultérieures uniquement sur Linux : le processus n’est pas privilégié et buffer n’est pas vide.

Exemples

L’exemple de code suivant montre comment appeler cette méthode. Pour obtenir une implémentation de la méthode de rappel, consultez la SendAsync section Exemple de surcharge de méthode.

L’exemple de code suivant nécessite les espaces de noms suivants :

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

L’exemple de code suivant envoie un message d’écho ICMP de manière asynchrone.

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

Remarques

La SendAsync méthode envoie le message Echo de manière asynchrone et, une fois l’opération terminée (avec succès ou échec), retourne le status à votre application. Appelez la SendAsync méthode lorsque votre application ne doit pas bloquer. Chaque appel s’exécute dans un thread distinct qui est automatiquement alloué à partir du pool de threads. Une fois l’opération asynchrone terminée, elle déclenche l’événement PingCompleted . Les applications utilisent un PingCompletedEventHandler délégué pour spécifier la méthode appelée lorsque SendAsync l’événement déclenche. Vous devez ajouter un PingCompletedEventHandler délégué à l’événement avant d’appeler SendAsync. La méthode du délégué reçoit un PingCompletedEventArgs objet qui contient un PingReply objet qui décrit le résultat de l’appel SendAsync . L’objet PingCompletedEventArgs hérite de la UserState propriété . Cette propriété contient l’objet userToken passé dans l’appel SendAsync .

Si votre application se bloque en attendant une réponse, utilisez les Send méthodes ; ces méthodes sont synchrones.

Si le message de réponse d’écho ICMP n’est pas reçu dans le délai spécifié par le paramètre, l’écho timeout ICMP échoue et la Status propriété est définie sur TimedOut.

Notes

Lorsque vous spécifiez de très petits nombres pour timeout, la réponse Ping peut être reçue même si timeout des millisecondes se sont écoulées.

Si la DontFragment propriété est true et que la taille totale du paquet dépasse la taille maximale des paquets qui peut être transmise par l’un des nœuds de routage entre les ordinateurs locaux et distants, la demande d’écho ICMP échoue. Dans ce cas, est Status défini sur PacketTooBig.

Utilisez la Ttl propriété pour spécifier le nombre maximal de fois où le message d’écho ICMP peut être transféré avant d’atteindre sa destination. Si le paquet n’atteint pas sa destination après avoir été transféré le nombre de fois spécifié, le paquet est ignoré et la demande d’écho ICMP échoue. Dans ce cas, est Status défini sur TtlExpired.

S’applique à

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

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

Essaie d’envoyer un message ICMP d’écho de manière asynchrone à l’ordinateur spécifié avec le tampon de données spécifié et de recevoir un message ICMP de réponse à écho correspondant de cet ordinateur. Cette surcharge vous permet de spécifier une valeur de délai pour l’opération.

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)

Paramètres

hostNameOrAddress
String

String qui identifie l’ordinateur de destination pour le message ICMP d’écho. La valeur spécifiée pour ce paramètre peut être un nom d’hôte ou la représentation sous forme de chaîne d’une adresse IP.

timeout
Int32

Valeur Int32 qui spécifie le nombre maximal de millisecondes (après envoi du message d’écho) d’attente du message ICMP de réponse à écho.

buffer
Byte[]

Tableau Byte qui contient les données à envoyer avec le message ICMP d’écho et à retourner dans le message ICMP de réponse à écho. Le tableau ne peut pas contenir plus de 65 500 octets.

userToken
Object

Objet passé à la méthode appelée quand l’opération asynchrone est terminée.

Exceptions

hostNameOrAddress a la valeur null ou est une chaîne vide ("").

-ou-

buffer a la valeur null.

timeout est inférieur à zéro.

Un appel à SendAsync est en cours.

Une exception a été levée lors de l’envoi ou de la réception des messages ICMP. Consultez l’exception interne de l’exception exacte qui a été levée.

hostNameOrAddress n’a pas pu être résolu en adresse IP valide.

Cet objet a été supprimé.

La taille de buffer dépasse 65 500 octets.

.NET 7 et versions ultérieures uniquement sur Linux : le processus n’est pas privilégié et buffer n’est pas vide.

Exemples

L’exemple de code suivant montre comment appeler une SendAsync surcharge. Consultez la vue d’ensemble de la Ping classe.

Remarques

La SendAsync méthode envoie le message Echo de manière asynchrone et, une fois l’opération terminée (avec succès ou échec), retourne le status à votre application. Appelez la SendAsync méthode lorsque votre application ne doit pas bloquer. Chaque appel s’exécute dans un thread distinct qui est automatiquement alloué à partir du pool de threads. Une fois l’opération asynchrone terminée, elle déclenche l’événement PingCompleted . Les applications utilisent un PingCompletedEventHandler délégué pour spécifier la méthode appelée lorsque SendAsync l’événement déclenche. Vous devez ajouter un PingCompletedEventHandler délégué à l’événement avant d’appeler SendAsync. La méthode du délégué reçoit un PingCompletedEventArgs objet contenant un PingReply objet qui décrit le résultat de l’appel SendAsync . L’objet PingCompletedEventArgs hérite de la UserState propriété . Cette propriété contient l’objet userToken passé dans l’appel SendAsync .

Si votre application doit bloquer en attendant une réponse, utilisez les Send méthodes ; ces méthodes sont synchrones.

Si le message de réponse d’écho ICMP n’est pas reçu dans le délai spécifié par le paramètre, l’écho timeout ICMP échoue et la Status propriété est définie sur TimedOut.

Notes

Lorsque vous spécifiez de très petits nombres pour timeout, la réponse Ping peut être reçue même si timeout des millisecondes se sont écoulées.

Cette surcharge utilise les paramètres par défaut pour la fragmentation des paquets et le transfert de paquets. Le paquet qui contient le message d’écho ICMP peut être fragmenté en transit si la taille totale du paquet dépasse la taille maximale des paquets qui peut être transmise par l’un des nœuds de routage entre les ordinateurs locaux et distants. Pour éviter la fragmentation, utilisez l’une SendAsync des méthodes qui prend un options paramètre et définissez la propriété sur DontFragmenttrue. Lorsque DontFragment est true et que la taille totale des paquets dépasse la taille maximale des paquets qui peut être transmise par l’un des nœuds de routage entre les ordinateurs locaux et distants, la demande d’écho ICMP échoue. Dans ce cas, est Status défini sur PacketTooBig. Les fragments de paquets (s’ils sont fragmentés) peuvent être transférés en acheminant les nœuds 128 fois avant d’être ignorés. Pour modifier ce paramètre, utilisez une SendAsync surcharge qui prend un options paramètre et définissez la Ttl propriété sur la valeur souhaitée. Si le paquet n’atteint pas sa destination après avoir été transféré le nombre de fois spécifié, le paquet est ignoré et la demande d’écho ICMP échoue. Dans ce cas, est Status défini sur TtlExpired.

S’applique à

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

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

Essaie d’envoyer un message ICMP d’écho de manière asynchrone avec le tampon de données spécifié à l’ordinateur qui a le IPAddress spécifié et de recevoir un message ICMP de réponse à écho correspondant de cet ordinateur. Cette surcharge vous permet de spécifier une valeur de délai pour l’opération.

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)

Paramètres

address
IPAddress

IPAddress qui identifie l’ordinateur de destination pour le message ICMP d’écho.

timeout
Int32

Valeur Int32 qui spécifie le nombre maximal de millisecondes (après envoi du message d’écho) d’attente du message ICMP de réponse à écho.

buffer
Byte[]

Tableau Byte qui contient les données à envoyer avec le message ICMP d’écho et à retourner dans le message ICMP de réponse à écho. Le tableau ne peut pas contenir plus de 65 500 octets.

userToken
Object

Objet passé à la méthode appelée quand l’opération asynchrone est terminée.

Exceptions

address ou buffer est null.

timeout est inférieur à zéro.

Un appel à SendAsync est en cours.

Une exception a été levée lors de l’envoi ou de la réception des messages ICMP. Consultez l’exception interne de l’exception exacte qui a été levée.

address n’est pas une adresse IP valide.

Cet objet a été supprimé.

La taille de buffer dépasse 65 500 octets.

.NET 7 et versions ultérieures uniquement sur Linux : le processus n’est pas privilégié et buffer n’est pas vide.

Exemples

Pour obtenir un exemple de code illustrant l’appel d’une SendAsync surcharge, consultez la vue d’ensemble de la Ping classe.

Remarques

Cette méthode envoie le message d’écho de manière asynchrone et, une fois l’opération terminée (avec succès ou échec), retourne le status à votre application. Appelez la SendAsync méthode lorsque votre application ne doit pas bloquer. Chaque appel s’exécute dans un thread distinct qui est automatiquement alloué à partir du pool de threads. Une fois l’opération asynchrone terminée, elle déclenche l’événement PingCompleted . Pour spécifier la méthode appelée lorsque SendAsync l’événement déclenche l’événement, vous devez ajouter un PingCompletedEventHandler délégué à l’événement avant d’appeler SendAsync. La méthode du délégué reçoit un PingCompletedEventArgs objet qui contient un PingReply objet qui décrit le résultat de l’appel SendAsync . L’objet PingCompletedEventArgs hérite de la UserState propriété . Cette propriété contient l’objet userToken passé dans l’appel SendAsync .

Notes

Si votre application se bloque en attendant une réponse, utilisez les Send méthodes ; ces méthodes sont synchrones.

Si le message de réponse d’écho ICMP n’est pas reçu dans le délai spécifié par le paramètre, l’écho timeout ICMP échoue et la Status propriété est définie sur TimedOut.

Notes

Lorsque vous spécifiez de très petits nombres pour timeout, la réponse Ping peut être reçue même si timeout des millisecondes se sont écoulées.

Cette surcharge utilise les paramètres par défaut pour la fragmentation des paquets et le transfert de paquets. Le paquet qui contient le message d’écho ICMP peut être fragmenté en transit si la taille totale du paquet dépasse la taille maximale des paquets qui peut être transmise par l’un des nœuds de routage entre les ordinateurs locaux et distants. Pour éviter la fragmentation, utilisez l’une SendAsync des méthodes qui prend un options paramètre et définissez la propriété sur DontFragmenttrue. Lorsque DontFragment est true et que la taille totale des paquets dépasse la taille maximale des paquets qui peut être transmise par l’un des nœuds de routage entre les ordinateurs locaux et distants, la demande d’écho ICMP échoue. Dans ce cas, est Status défini sur PacketTooBig. Les fragments de paquets (s’ils sont fragmentés) peuvent être transférés en acheminant les nœuds 128 fois avant d’être ignorés. Pour modifier ce paramètre, utilisez une SendAsync surcharge qui prend un options paramètre et définissez la Ttl propriété sur la valeur souhaitée. Si le paquet n’atteint pas sa destination après avoir été transféré le nombre de fois spécifié, le paquet est ignoré et la demande d’écho ICMP échoue. Dans ce cas, est Status défini sur TtlExpired.

S’applique à

SendAsync(IPAddress, Int32, Object)

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

Essaie d’envoyer un message ICMP d’écho de manière asynchrone à l’ordinateur qui a le IPAddress spécifié et de recevoir un message ICMP de réponse à écho correspondant de cet ordinateur. Cette surcharge vous permet de spécifier une valeur de délai pour l’opération.

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)

Paramètres

address
IPAddress

IPAddress qui identifie l’ordinateur de destination pour le message ICMP d’écho.

timeout
Int32

Valeur Int32 qui spécifie le nombre maximal de millisecondes (après envoi du message d’écho) d’attente du message ICMP de réponse à écho.

userToken
Object

Objet passé à la méthode appelée quand l’opération asynchrone est terminée.

Exceptions

address a la valeur null.

timeout est inférieur à zéro.

Une exception a été levée lors de l’envoi ou de la réception des messages ICMP. Consultez l’exception interne de l’exception exacte qui a été levée.

address n’est pas une adresse IP valide.

Cet objet a été supprimé.

Exemples

Pour obtenir un exemple de code illustrant l’appel d’une SendAsync surcharge, consultez la vue d’ensemble de la Ping classe.

Remarques

La SendAsync méthode envoie le message Echo de manière asynchrone et, une fois l’opération terminée (avec succès ou échec), retourne le status à votre application. Appelez la SendAsync méthode lorsque votre application ne doit pas bloquer. Chaque appel s’exécute dans un thread distinct qui est automatiquement alloué à partir du pool de threads. Une fois l’opération asynchrone terminée, elle déclenche l’événement PingCompleted . Les applications utilisent un PingCompletedEventHandler délégué pour spécifier la méthode appelée lorsque SendAsync l’événement déclenche. Vous devez ajouter un PingCompletedEventHandler délégué à l’événement avant d’appeler SendAsync. La méthode du délégué reçoit un PingCompletedEventArgs objet qui contient un PingReply objet qui décrit le résultat de l’appel SendAsync . L’objet PingCompletedEventArgs hérite de la UserState propriété . Cette propriété contient l’objet userToken passé dans l’appel SendAsync .

Si votre application doit bloquer en attendant une réponse, utilisez les Send méthodes ; ces méthodes sont synchrones.

Si le message de réponse d’écho ICMP n’est pas reçu dans le délai spécifié par le paramètre, l’écho timeout ICMP échoue et la Status propriété est définie sur TimedOut.

Notes

Lorsque vous spécifiez de très petits nombres pour timeout, la réponse Ping peut être reçue même si timeout des millisecondes se sont écoulées.

Cette surcharge utilise les paramètres par défaut pour la fragmentation des paquets et le transfert de paquets. Le paquet qui contient le message d’écho ICMP peut être fragmenté en transit si la taille totale du paquet dépasse la taille maximale des paquets qui peut être transmise par l’un des nœuds de routage entre les ordinateurs locaux et distants. Pour éviter la fragmentation, utilisez l’une SendAsync des méthodes qui prend un options paramètre et définissez la propriété sur DontFragmenttrue. Lorsque DontFragment est true et que la taille totale des paquets dépasse la taille maximale des paquets qui peut être transmise par l’un des nœuds de routage entre les ordinateurs locaux et distants, la demande d’écho ICMP échoue. Dans ce cas, est Status défini sur PacketTooBig. Les fragments de paquets (s’ils sont fragmentés) peuvent être transférés en acheminant les nœuds 128 fois avant d’être ignorés. Pour modifier ce paramètre, utilisez une SendAsync surcharge qui prend un options paramètre et définissez la Ttl propriété sur la valeur souhaitée. Si le paquet n’atteint pas sa destination après avoir été transféré le nombre de fois spécifié, le paquet est ignoré et la demande d’écho ICMP échoue. Dans ce cas, est Status défini sur TtlExpired.

S’applique à

SendAsync(String, Object)

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

Essaie d’envoyer un message ICMP d’écho de manière asynchrone à l’ordinateur spécifié et de recevoir un message ICMP de réponse à écho correspondant de cet ordinateur.

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)

Paramètres

hostNameOrAddress
String

String qui identifie l’ordinateur de destination pour le message ICMP d’écho. La valeur spécifiée pour ce paramètre peut être un nom d’hôte ou la représentation sous forme de chaîne d’une adresse IP.

userToken
Object

Objet passé à la méthode appelée quand l’opération asynchrone est terminée.

Exceptions

hostNameOrAddress a la valeur null ou est une chaîne vide ("").

Un appel à la méthode SendAsync(String, Object) est en cours.

Une exception a été levée lors de l’envoi ou de la réception des messages ICMP. Consultez l’exception interne de l’exception exacte qui a été levée.

hostNameOrAddress n’a pas pu être résolu en adresse IP valide.

Cet objet a été supprimé.

Exemples

Pour obtenir un exemple de code illustrant l’appel de la SendAsync méthode, consultez la vue d’ensemble de la Ping classe.

Remarques

La SendAsync méthode envoie le message d’écho de manière asynchrone et, une fois l’opération terminée (avec succès ou échec), retourne le status à votre application. Appelez la SendAsync méthode lorsque votre application ne doit pas bloquer. Chaque appel à cette méthode s’exécute dans un thread distinct qui est automatiquement alloué à partir du pool de threads. Une fois l’opération asynchrone terminée, elle déclenche l’événement PingCompleted . Pour spécifier la méthode appelée lorsque SendAsync l’événement déclenche l’événement, vous devez ajouter un PingCompletedEventHandler délégué à l’événement avant d’appeler SendAsync. La méthode du délégué reçoit un PingCompletedEventArgs objet qui contient un PingReply objet qui décrit le résultat de l’appel SendAsync . L’objet PingCompletedEventArgs hérite de la UserState propriété . Cette propriété contient l’objet userToken passé dans l’appel SendAsync .

Notes

Si votre application doit bloquer en attendant une réponse, utilisez les Send méthodes ; ces méthodes sont synchrones.

Cette méthode envoie une mémoire tampon de 32 Byte données avec le message d’écho ICMP. La méthode attend cinq secondes pour un message de réponse d’écho ICMP. Si elle ne reçoit pas de réponse dans ce délai, la méthode retourne et la propriété a la StatusTimedOutvaleur .

Cette surcharge utilise les paramètres par défaut pour la fragmentation des paquets et le transfert de paquets. Le paquet qui contient le message d’écho ICMP peut être fragmenté en transit si la taille totale du paquet dépasse la taille maximale des paquets qui peut être transmise par l’un des nœuds de routage entre les ordinateurs locaux et distants. Pour éviter la fragmentation, utilisez l’une SendAsync des méthodes qui prend un options paramètre et définissez la propriété sur DontFragmenttrue. Lorsque DontFragment est true et que la taille totale des paquets dépasse la taille maximale des paquets qui peut être transmise par l’un des nœuds de routage entre les ordinateurs locaux et distants, la demande d’écho ICMP échoue. Dans ce cas, est Status défini sur PacketTooBig.

Les fragments de paquets peuvent être transférés en acheminant les nœuds 128 fois avant d’être ignorés. Pour modifier ce paramètre, utilisez une SendAsync surcharge qui prend un options paramètre et définissez la Ttl propriété sur la valeur souhaitée. Si le paquet n’atteint pas sa destination après avoir été transféré le nombre de fois spécifié, le paquet est ignoré et la demande d’écho ICMP échoue. Dans ce cas, est Status défini sur TtlExpired.

S’applique à

SendAsync(IPAddress, Object)

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

Essaie d’envoyer un message ICMP d’écho de manière asynchrone à l’ordinateur qui a le IPAddress spécifié et de recevoir un message ICMP de réponse à écho correspondant de cet ordinateur.

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)

Paramètres

address
IPAddress

IPAddress qui identifie l’ordinateur de destination pour le message ICMP d’écho.

userToken
Object

Objet passé à la méthode appelée quand l’opération asynchrone est terminée.

Exceptions

address a la valeur null.

Un appel à la méthode SendAsync est en cours.

Une exception a été levée lors de l’envoi ou de la réception des messages ICMP. Consultez l’exception interne de l’exception exacte qui a été levée.

address n’est pas une adresse IP valide.

Cet objet a été supprimé.

Exemples

Pour obtenir un exemple de code illustrant l’appel d’une SendAsync méthode, consultez la vue d’ensemble de la Ping classe.

Remarques

La SendAsync méthode envoie le message d’écho de manière asynchrone et, une fois l’opération terminée (avec succès ou échec), retourne le status à votre application. Appelez la SendAsync méthode lorsque votre application ne doit pas bloquer. Chaque appel à cette méthode s’exécute dans un thread distinct qui est automatiquement alloué à partir du pool de threads. Une fois l’opération asynchrone terminée, elle déclenche l’événement PingCompleted . Pour spécifier la méthode appelée lorsque SendAsync l’événement déclenche l’événement, vous devez ajouter un PingCompletedEventHandler délégué à l’événement avant d’appeler SendAsync. La méthode du délégué reçoit un PingCompletedEventArgs objet qui contient un PingReply objet qui décrit le résultat de l’appel SendAsync . L’objet PingCompletedEventArgs hérite de la UserState propriété . Cette propriété contient l’objet userToken passé dans l’appel SendAsync .

Notes

Si votre application doit bloquer en attendant une réponse, utilisez l’une Send des méthodes ; ces méthodes sont synchrones.

Cette méthode envoie une mémoire tampon de 32 Byte données avec le message d’écho ICMP. La méthode attend cinq secondes pour un message de réponse d’écho ICMP. Si elle ne reçoit pas de réponse dans ce délai, la méthode retourne et la Status propriété est définie sur TimedOut.

Cette surcharge utilise les paramètres par défaut pour la fragmentation des paquets et le transfert de paquets. Le paquet qui contient le message d’écho ICMP peut être fragmenté en transit si la taille totale du paquet dépasse la taille maximale des paquets qui peut être transmise par l’un des nœuds de routage entre les ordinateurs locaux et distants. Pour éviter la fragmentation, utilisez l’une SendAsync des méthodes qui prend un options paramètre et définissez la propriété sur DontFragmenttrue. Lorsque DontFragment est true et que la taille totale des paquets dépasse la taille maximale des paquets qui peut être transmise par l’un des nœuds de routage entre les ordinateurs locaux et distants, la demande d’écho ICMP échoue. Dans ce cas, est Status défini sur PacketTooBig.

Les fragments de paquets peuvent être transférés en acheminant les nœuds 128 fois avant d’être ignorés. Pour modifier ce paramètre, utilisez une SendAsync surcharge qui prend un options paramètre et définissez la Ttl propriété sur la valeur souhaitée. Si le paquet n’atteint pas sa destination après avoir été transféré le nombre de fois spécifié, le paquet est ignoré et la demande d’écho ICMP échoue. Dans ce cas, est Status défini sur TtlExpired.

S’applique à

SendAsync(String, Int32, Object)

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

Essaie d’envoyer un message ICMP d’écho de manière asynchrone à l’ordinateur spécifié et de recevoir un message ICMP de réponse à écho correspondant de cet ordinateur. Cette surcharge vous permet de spécifier une valeur de délai pour l’opération.

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)

Paramètres

hostNameOrAddress
String

String qui identifie l’ordinateur de destination pour le message ICMP d’écho. La valeur spécifiée pour ce paramètre peut être un nom d’hôte ou la représentation sous forme de chaîne d’une adresse IP.

timeout
Int32

Valeur Int32 qui spécifie le nombre maximal de millisecondes (après envoi du message d’écho) d’attente du message ICMP de réponse à écho.

userToken
Object

Objet passé à la méthode appelée quand l’opération asynchrone est terminée.

Exceptions

hostNameOrAddress a la valeur null ou est une chaîne vide ("").

timeout est inférieur à zéro.

Un appel à SendAsync est en cours.

Une exception a été levée lors de l’envoi ou de la réception des messages ICMP. Consultez l’exception interne de l’exception exacte qui a été levée.

hostNameOrAddress n’a pas pu être résolu en adresse IP valide.

Cet objet a été supprimé.

Exemples

Pour obtenir un exemple de code illustrant l’appel de la SendAsync méthode, consultez la vue d’ensemble de la Ping classe.

Remarques

La SendAsync méthode envoie le message Echo de manière asynchrone et, une fois l’opération terminée (avec succès ou échec), retourne le status à votre application. Appelez la SendAsync méthode lorsque votre application ne doit pas bloquer. Chaque appel s’exécute dans un thread distinct qui est automatiquement alloué à partir du pool de threads. Une fois l’opération asynchrone terminée, elle déclenche l’événement PingCompleted . Les applications utilisent un PingCompletedEventHandler délégué pour spécifier la méthode appelée lorsque SendAsync l’événement déclenche. Vous devez ajouter un PingCompletedEventHandler délégué à l’événement avant d’appeler SendAsync. La méthode du délégué reçoit un PingCompletedEventArgs objet qui contient un PingReply objet qui décrit le résultat de l’appel SendAsync . L’objet PingCompletedEventArgs hérite de la UserState propriété . Cette propriété contient l’objet userToken passé dans l’appel SendAsync .

Si votre application doit bloquer en attendant une réponse, utilisez les Send méthodes ; ces méthodes sont synchrones.

Si le message de réponse d’écho ICMP n’est pas reçu dans le délai spécifié par le paramètre, l’écho timeout ICMP échoue et la Status propriété est définie sur TimedOut.

Notes

Lorsque vous spécifiez de très petits nombres pour timeout, la réponse Ping peut être reçue même si timeout des millisecondes se sont écoulées.

Cette surcharge utilise les paramètres par défaut pour la fragmentation des paquets et le transfert de paquets. Le paquet qui contient le message d’écho ICMP peut être fragmenté en transit si la taille totale du paquet dépasse la taille maximale des paquets qui peut être transmise par l’un des nœuds de routage entre les ordinateurs locaux et distants. Pour éviter la fragmentation, utilisez l’une SendAsync des méthodes qui prend un options paramètre et définissez la propriété sur DontFragmenttrue. Lorsque DontFragment est true et que la taille totale des paquets dépasse la taille maximale des paquets qui peut être transmise par l’un des nœuds de routage entre les ordinateurs locaux et distants, la demande d’écho ICMP échoue. Dans ce cas, est Status défini sur PacketTooBig. Les fragments de paquets (s’ils sont fragmentés) peuvent être transférés en acheminant les nœuds 128 fois avant d’être ignorés. Pour modifier ce paramètre, utilisez une SendAsync surcharge qui prend un options paramètre et définissez la Ttl propriété sur la valeur souhaitée. Si le paquet n’atteint pas sa destination après avoir été transféré le nombre de fois spécifié, le paquet est ignoré et la demande d’écho ICMP échoue. Dans ce cas, est Status défini sur TtlExpired.

S’applique à