Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

Ping, classe

Permet à une application de déterminer si un ordinateur distant est accessible sur le réseau.

Espace de noms :  System.Net.NetworkInformation
Assembly :  System (dans System.dll)
public class Ping : Component

Le type Ping expose les membres suivants.

  NomDescription
Méthode publiquePingInitialise une nouvelle instance de la classe Ping.
Début
  NomDescription
Propriété protégéeCanRaiseEventsObtient une valeur qui indique si le composant peut déclencher un événement. (Hérité de Component.)
Propriété publiqueContainerObtient le IContainer qui contient Component. (Hérité de Component.)
Propriété protégéeDesignModeObtient une valeur qui indique si Component est actuellement en mode design. (Hérité de Component.)
Propriété protégéeEventsObtient la liste des gestionnaires d'événements attachés à ce Component. (Hérité de Component.)
Propriété publiqueSiteObtient ou définit le ISite de Component. (Hérité de Component.)
Début
  NomDescription
Méthode publiqueCreateObjRefCrée un objet contenant toutes les informations appropriées requises pour générer un proxy permettant de communiquer avec un objet distant. (Hérité de MarshalByRefObject.)
Méthode publiqueDispose()Libère toutes les ressources utilisées par Component. (Hérité de Component.)
Méthode protégéeDispose(Boolean)Libère les ressources non managées utilisées par l'objet Ping et supprime éventuellement les ressources managées. (Substitue Component.Dispose(Boolean).)
Méthode publiqueEquals(Object)Détermine si l'objet spécifié est identique à l'objet actuel. (Hérité de Object.)
Méthode protégéeFinalizeLibère les ressources non managées et exécute d'autres opérations de nettoyage avant la récupération de Component par le garbage collection. (Hérité de Component.)
Méthode publiqueGetHashCodeSert de fonction de hachage par défaut. (Hérité de Object.)
Méthode publiqueGetLifetimeServiceRécupère l'objet de service de durée de vie en cours qui contrôle la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject.)
Méthode protégéeGetServiceRetourne un objet qui représente un service fourni par Component ou par son Container. (Hérité de Component.)
Méthode publiqueGetTypeObtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publiqueInitializeLifetimeServiceObtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject.)
Méthode protégéeMemberwiseClone()Crée une copie superficielle de l'objet Object actuel. (Hérité de Object.)
Méthode protégéeMemberwiseClone(Boolean)Crée une copie superficielle de l'objet MarshalByRefObject actuel. (Hérité de MarshalByRefObject.)
Méthode protégéeOnPingCompletedDéclenche l'événement PingCompleted.
Méthode publiqueSend(IPAddress)Essaie d'envoyer un message ICMP d'écho à l'ordinateur qui a le IPAddress spécifié et de recevoir un message ICMP de réponse à écho correspondant de cet ordinateur.
Méthode publiqueSend(String)Essaie d'envoyer un message ICMP d'écho à l'ordinateur spécifié et de recevoir un message ICMP de réponse à écho correspondant de cet ordinateur.
Méthode publiqueSend(IPAddress, Int32)Essaie d'envoyer un message ICMP d'écho 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 méthode vous permet de spécifier une valeur de délai pour l'opération.
Méthode publiqueSend(String, Int32)Essaie d'envoyer un message ICMP d'écho à l'ordinateur spécifié et de recevoir un message ICMP de réponse à écho correspondant de cet ordinateur. Cette méthode vous permet de spécifier une valeur de délai pour l'opération.
Méthode publiqueSend(IPAddress, Int32, Byte[])Essaie d'envoyer un message ICMP d'écho 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.
Méthode publiqueSend(String, Int32, Byte[])Essaie d'envoyer un message ICMP d'écho à 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.
Méthode publiqueSend(IPAddress, Int32, Byte[], PingOptions)Essaie d'envoyer un message ICMP d'écho 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.
Méthode publiqueSend(String, Int32, Byte[], PingOptions)Essaie d'envoyer un message ICMP d'écho à 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.
Méthode publiqueSendAsync(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.
Méthode publiqueSendAsync(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.
Méthode publiqueSendAsync(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.
Méthode publiqueSendAsync(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.
Méthode publiqueSendAsync(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.
Méthode publiqueSendAsync(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.
Méthode publiqueSendAsync(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.
Méthode publiqueSendAsync(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.
Méthode publiqueSendAsyncCancelAnnule toutes les demandes asynchrones en attente pour envoyer un message ICMP d'écho et reçoit un message ICMP de réponse à écho correspondant.
Méthode publiqueSendPingAsync(IPAddress)Envoie un message ICMP d'écho avec le tampon de données spécifié à l'ordinateur qui a le IPAddress spécifié et reçoit un message ICMP de réponse à écho correspondant de cet ordinateur en tant qu'opération asynchrone.
Méthode publiqueSendPingAsync(String)Envoie un message ICMP d'écho à l'ordinateur spécifié avec le tampon de données spécifié et reçoit un message ICMP de réponse à écho correspondant de cet ordinateur en tant qu'opération asynchrone.
Méthode publiqueSendPingAsync(IPAddress, Int32)Envoie un message ICMP d'écho avec le tampon de données spécifié à l'ordinateur qui a le IPAddress spécifié et reçoit un message ICMP de réponse à écho correspondant de cet ordinateur en tant qu'opération asynchrone. Cette surcharge vous permet de spécifier une valeur de délai pour l'opération.
Méthode publiqueSendPingAsync(String, Int32)Envoie un message ICMP d'écho à l'ordinateur spécifié avec le tampon de données spécifié et reçoit un message ICMP de réponse à écho correspondant de cet ordinateur en tant qu'opération asynchrone. Cette surcharge vous permet de spécifier une valeur de délai pour l'opération.
Méthode publiqueSendPingAsync(IPAddress, Int32, Byte[])Envoie un message ICMP d'écho avec le tampon de données spécifié à l'ordinateur qui a le IPAddress spécifié et reçoit un message ICMP de réponse à écho correspondant de cet ordinateur en tant qu'opération asynchrone. Cette surcharge vous permet de spécifier une valeur de délai d'attente pour l'opération et une mémoire tampon à utiliser pour l'envoi et la réception.
Méthode publiqueSendPingAsync(String, Int32, Byte[])Envoie un message ICMP d'écho à l'ordinateur spécifié avec le tampon de données spécifié et reçoit un message ICMP de réponse à écho correspondant de cet ordinateur en tant qu'opération asynchrone. Cette surcharge vous permet de spécifier une valeur de délai d'attente pour l'opération et une mémoire tampon à utiliser pour l'envoi et la réception.
Méthode publiqueSendPingAsync(IPAddress, Int32, Byte[], PingOptions)Envoie un message ICMP d'écho avec le tampon de données spécifié à l'ordinateur qui a le IPAddress spécifié et reçoit un message ICMP de réponse à écho correspondant de cet ordinateur en tant qu'opération asynchrone. Cette surcharge vous permet de spécifier une valeur de délai d'attente pour l'opération, une mémoire tampon à utiliser pour les envois et les réceptions, et de contrôler la fragmentation et les valeurs de durée de vie pour le paquet de message ICMP d'écho.
Méthode publiqueSendPingAsync(String, Int32, Byte[], PingOptions)Envoie un message ICMP d'écho à l'ordinateur spécifié avec le tampon de données spécifié et reçoit un message ICMP de réponse à écho correspondant de cet ordinateur en tant qu'opération asynchrone. Cette surcharge vous permet de spécifier une valeur de délai d'attente pour l'opération, une mémoire tampon à utiliser pour les envois et les réceptions, et de contrôler la fragmentation et les valeurs de durée de vie pour le paquet de message ICMP d'écho.
Méthode publiqueToStringRetourne String contenant le nom du Component, s'il existe. Cette méthode ne doit pas être substituée. (Hérité de Component.)
Début
  NomDescription
Événement publicDisposedSe produit lorsque le composant est supprimé par un appel à la méthode Dispose. (Hérité de Component.)
Événement publicPingCompletedSe produit lorsqu'une opération asynchrone pour envoyer un message ICMP d'écho et recevoir le message ICMP de réponse à écho correspondant se termine ou est annulée.
Début

Les applications utilisent la classe Ping pour détecter si un ordinateur distant est accessible.

La topologie de réseau peut déterminer si Ping peut contacter un hôte distant avec succès. La présence et la configuration des proxies, le matériel de traduction d'adresses réseau ou les pare-feu peuvent empêcher Ping de réussir. Un Ping réussi indique uniquement que l'hôte distant peut être atteint sur le réseau ; la présence de services de niveau supérieur (tels qu'un serveur Web) sur l'hôte distant n'est pas garantie.

Cette classe fournit une fonctionnalité semblable à l'outil de ligne de commande Ping.exe. Les méthodes Send et SendAsync envoient un message ICMP (Internet Control Message Protocol) de demande d'écho à un ordinateur distant et attendent de recevoir un message ICMP de réponse à écho de cet ordinateur. Pour une description détaillée des messages ICMP, consultez la RFC 792, disponible à l'adresse http://www.ietf.org.

Les types suivants sont utilisés avec la classe Ping et sont décrits en détail ci-dessous.

Nom de type

Description

IPStatus

Définit des codes d'état qui décrivent le résultat d'un message de demande d'écho ICMP.

PingOptions

Vous permet de configurer ou de récupérer les paramètres qui contrôlent combien de fois le paquet demandé peut être transféré (Ttl) et s'il peut être fragmenté (DontFragment).

PingReply

Contient les résultats d'une demande d'écho ICMP.

PingException

Levée si une erreur irrécupérable se produit.

PingCompletedEventArgs

Contient les données associées aux événements PingCompleted qui sont déclenchés lorsqu'un appel SendAsync se termine ou est annulé.

PingCompletedEventHandler

Délégué qui fournit la méthode de rappel appelée lorsqu'un appel SendAsync se termine ou est annulé.

Les méthodes Send et SendAsync retournent la réponse dans un objet PingReply. La propriété PingReply.Status retourne une valeur IPStatus pour indiquer le résultat de la demande.

Lorsque vous envoyez la demande, vous devez spécifier l'ordinateur distant. Vous pouvez fournir pour cela une chaîne de nom d'hôte, une adresse IP sous forme de chaîne ou un objet IPAddress.

Vous pouvez également spécifier l'un des types d'informations suivants :

  • Données accompagnant la demande. buffer vous permet de connaître la durée nécessaire au déplacement d'un paquet de taille donnée vers et à partir de l'hôte distant et l'unité de transmission maximale du chemin d'accès réseau. (Consultez les surcharges Send ou SendAsync qui prennent un paramètre buffer.)

  • Si le paquet d'écho ICMP peut être fragmenté en transit. (Consultez la propriété DontFragment et les surcharges Send ou SendAsync qui prennent un paramètre options.)

  • Combien de fois des nœuds de routage, tels que des routeurs ou des passerelles, peuvent transférer le paquet avant qu'il n'atteigne l'ordinateur de destination ou qu'il soit ignoré. (Consultez Ttl et les surcharges Send ou SendAsync qui prennent un paramètre options.)

  • Délai imparti pour la réception de la réponse. (Consultez les surcharges Send ou SendAsync qui prennent un paramètre timeout.)

La classe Ping propose des méthodes synchrones et asynchrones pour envoyer la demande. Si votre application doit être bloquée en attendant une réponse, utilisez les méthodes Send ; ces méthodes sont synchrones. Si votre application ne doit pas être bloquée, utilisez les méthodes SendAsync asynchrones. Un appel à SendAsync est exécuté dans son propre thread qui est alloué automatiquement à partir du pool de threads. Lorsque l'opération asynchrone se termine, elle déclenche l'événement PingCompleted. Les applications utilisent un délégué PingCompletedEventHandler pour spécifier la méthode appelée pour les événements PingCompleted. Vous devez ajouter un délégué PingCompletedEventHandler à l'événement avant d'appeler SendAsync. La méthode du délégué reçoit un objet PingCompletedEventArgs qui contient un objet PingReply qui décrit le résultat de l'appel SendAsync.

Vous ne pouvez pas utiliser la même instance de la classe Ping pour générer plusieurs demandes d'écho ICMP simultanées. L'appel à Send pendant qu'un appel SendAsync est en cours ou l'appel à SendAsync plusieurs fois avant que tous les appels précédents ne soient terminés provoque une exception InvalidOperationException.

L'exemple de code suivant illustre l'utilisation de la classe Ping de manière synchrone.


using System;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;

namespace Examples.System.Net.NetworkInformation.PingTest
{
    public class PingExample
    {
        // args[0] can be an IPaddress or host name.
        public static void Main (string[] args)
        {
            Ping pingSender = new Ping ();
            PingOptions options = new PingOptions ();

            // Use the default Ttl value which is 128,
            // but change the fragmentation behavior.
            options.DontFragment = true;

            // Create a buffer of 32 bytes of data to be transmitted.
            string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
            byte[] buffer = Encoding.ASCII.GetBytes (data);
            int timeout = 120;
            PingReply reply = pingSender.Send (args[0], timeout, buffer, options);
            if (reply.Status == IPStatus.Success)
            {
                Console.WriteLine ("Address: {0}", reply.Address.ToString ());
                Console.WriteLine ("RoundTrip time: {0}", reply.RoundtripTime);
                Console.WriteLine ("Time to live: {0}", reply.Options.Ttl);
                Console.WriteLine ("Don't fragment: {0}", reply.Options.DontFragment);
                Console.WriteLine ("Buffer size: {0}", reply.Buffer.Length);
            }
        }
    }
}


L'exemple de code suivant illustre l'utilisation de la classe Ping de manière asynchrone.


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


.NET Framework

Pris en charge dans : 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Tout membre static (Shared en Visual Basic) public de ce type est thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft. Tous droits réservés.