Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase Ping

 

Publicado: noviembre de 2016

Permite que una aplicación determinar si un equipo remoto es accesible a través de la red.

Espacio de nombres:   System.Net.NetworkInformation
Ensamblado:  System (en System.dll)

System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.Net.NetworkInformation.Ping

public class Ping : Component

NombreDescripción
System_CAPS_pubmethodPing()

Inicializa una nueva instancia de la clase Ping.

NombreDescripción
System_CAPS_protpropertyCanRaiseEvents

Obtiene un valor que indica si el componente puede provocar un evento.(Heredado de Component).

System_CAPS_pubpropertyContainer

Obtiene IContainer que contiene Component.(Heredado de Component).

System_CAPS_protpropertyDesignMode

Obtiene un valor que indica si la Component está actualmente en modo de diseño.(Heredado de Component).

System_CAPS_protpropertyEvents

Obtiene la lista de controladores de eventos que se adjuntará a este Component.(Heredado de Component).

System_CAPS_pubpropertySite

Obtiene o establece la ISite de la Component.(Heredado de Component).

NombreDescripción
System_CAPS_pubmethodCreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar a un proxy que se utiliza para comunicarse con un objeto remoto.(Heredado de MarshalByRefObject).

System_CAPS_pubmethodDispose()

Libera todos los recursos que usa Component.(Heredado de Component).

System_CAPS_protmethodDispose(Boolean)

Libera los recursos no administrados que usa el objeto Ping y, de forma opcional, desecha los recursos administrados.(Invalida Component.Dispose(Boolean)).

System_CAPS_pubmethodEquals(Object)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object).

System_CAPS_protmethodFinalize()

Libera recursos no administrados y realiza otras operaciones de limpieza antes de que se reclame el elemento Component durante la recolección de elementos no usados.(Heredado de Component).

System_CAPS_pubmethodGetHashCode()

Sirve como la función hash predeterminada.(Heredado de Object).

System_CAPS_pubmethodGetLifetimeService()

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.(Heredado de MarshalByRefObject).

System_CAPS_protmethodGetService(Type)

Devuelve un objeto que representa el servicio suministrado por Component o por Container.(Heredado de Component).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_pubmethodInitializeLifetimeService()

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.(Heredado de MarshalByRefObject).

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_protmethodMemberwiseClone(Boolean)

Crea una copia superficial del elemento actual MarshalByRefObject objeto.(Heredado de MarshalByRefObject).

System_CAPS_protmethodOnPingCompleted(PingCompletedEventArgs)

Genera el evento PingCompleted.

System_CAPS_pubmethodSend(IPAddress)

Intenta enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) para el equipo que tiene especificado IPAddress, y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo.

System_CAPS_pubmethodSend(IPAddress, Int32)

Intenta enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) con el búfer de datos especificado en el equipo que tenga especificado IPAddress, y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo. Este método permite especificar un valor de tiempo de espera para la operación.

System_CAPS_pubmethodSend(IPAddress, Int32, Byte[])

Intenta enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) con el búfer de datos especificado en el equipo que tenga especificado IPAddress, y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación.

System_CAPS_pubmethodSend(IPAddress, Int32, Byte[], PingOptions)

Intenta enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) con el búfer de datos especificado en el equipo que contiene el IPAddress y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación y fragmentación de control y los valores de tiempo de vida para el paquete de mensaje de eco ICMP.

System_CAPS_pubmethodSend(String)

Intenta enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) para el equipo especificado y recibir un ICMP correspondiente un eco de mensaje de respuesta de ese equipo.

System_CAPS_pubmethodSend(String, Int32)

Intenta enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) para el equipo especificado y recibir un ICMP correspondiente un eco de mensaje de respuesta de ese equipo. Este método permite especificar un valor de tiempo de espera para la operación.

System_CAPS_pubmethodSend(String, Int32, Byte[])

Intenta enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) con el búfer de datos especificado al equipo especificado y recibir un ICMP correspondiente un eco de mensaje de respuesta de ese equipo. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación.

System_CAPS_pubmethodSend(String, Int32, Byte[], PingOptions)

Intenta enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) con el búfer de datos especificado al equipo especificado y recibir un ICMP correspondiente un eco de mensaje de respuesta de ese equipo. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación y fragmentación de control y los valores de tiempo de vida para el paquete ICMP.

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

Forma asincrónica, intenta enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) con el búfer de datos especificado al equipo que tiene especificado IPAddress, y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación.

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

Forma asincrónica, intenta enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) con el búfer de datos especificado al equipo que tiene especificado IPAddress, y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación y fragmentación de control y los valores de tiempo de vida para el paquete de mensaje de eco ICMP.

System_CAPS_pubmethodSendAsync(IPAddress, Int32, Object)

Forma asincrónica, intenta enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) para el equipo que tiene especificado IPAddress, y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación.

System_CAPS_pubmethodSendAsync(IPAddress, Object)

Forma asincrónica, intenta enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) para el equipo que tiene especificado IPAddress, y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo.

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

Forma asincrónica, intenta enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) con el búfer de datos especificado al equipo especificado y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación.

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

Forma asincrónica, intenta enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) con el búfer de datos especificado al equipo especificado y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación y fragmentación de control y los valores de tiempo de vida para el paquete ICMP.

System_CAPS_pubmethodSendAsync(String, Int32, Object)

Forma asincrónica, intenta enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) para el equipo especificado y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación.

System_CAPS_pubmethodSendAsync(String, Object)

Forma asincrónica, intenta enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) para el equipo especificado y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo.

System_CAPS_pubmethodSendAsyncCancel()

Cancela todas las solicitudes asincrónicas pendientes para enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) y recibe un mensaje de respuesta de eco ICMP correspondiente.

System_CAPS_pubmethodSendPingAsync(IPAddress)

Enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) con el búfer de datos especificado al equipo que tiene especificado IPAddress, y recibe un mensaje de respuesta de eco ICMP correspondiente de dicho equipo como una operación asincrónica.

System_CAPS_pubmethodSendPingAsync(IPAddress, Int32)

Enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) con el búfer de datos especificado al equipo que tiene especificado IPAddress, y recibe un mensaje de respuesta de eco ICMP correspondiente de dicho equipo como una operación asincrónica. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación.

System_CAPS_pubmethodSendPingAsync(IPAddress, Int32, Byte[])

Enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) con el búfer de datos especificado al equipo que tiene especificado IPAddress, y recibe un mensaje de respuesta de eco ICMP correspondiente de dicho equipo como una operación asincrónica. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación y un búfer que usará para enviar y recibir.

System_CAPS_pubmethodSendPingAsync(IPAddress, Int32, Byte[], PingOptions)

Enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) con el búfer de datos especificado al equipo que tiene especificado IPAddress, y recibe un mensaje de respuesta de eco ICMP correspondiente de dicho equipo como una operación asincrónica. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación, un búfer para enviar y recibir, y controlar la fragmentación y los valores de tiempo de vida para el paquete de mensaje de eco ICMP.

System_CAPS_pubmethodSendPingAsync(String)

Envía un Control de mensaje de protocolo Internet (ICMP) mensaje de eco con los datos especificados del búfer en el equipo especificado y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo como una operación asincrónica.

System_CAPS_pubmethodSendPingAsync(String, Int32)

Envía un Control de mensaje de protocolo Internet (ICMP) mensaje de eco con los datos especificados del búfer en el equipo especificado y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo como una operación asincrónica. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación.

System_CAPS_pubmethodSendPingAsync(String, Int32, Byte[])

Envía un Control de mensaje de protocolo Internet (ICMP) mensaje de eco con los datos especificados del búfer en el equipo especificado y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo como una operación asincrónica. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación y un búfer que usará para enviar y recibir.

System_CAPS_pubmethodSendPingAsync(String, Int32, Byte[], PingOptions)

Envía un Control de mensaje de protocolo Internet (ICMP) mensaje de eco con los datos especificados del búfer en el equipo especificado y recibir un mensaje de respuesta de eco ICMP correspondiente de dicho equipo como una operación asincrónica. Esta sobrecarga permite especificar un valor de tiempo de espera para la operación, un búfer para enviar y recibir, y controlar la fragmentación y los valores de tiempo de vida para el paquete de mensaje de eco ICMP.

System_CAPS_pubmethodToString()

Devuelve un String que contiene el nombre de la Component, si existe. Este método no se debe invalidar.(Heredado de Component).

NombreDescripción
System_CAPS_pubeventDisposed

Se produce cuando el componente se elimina mediante una llamada a la Dispose (método).(Heredado de Component).

System_CAPS_pubeventPingCompleted

Se produce cuando una operación asincrónica para enviar un mensaje de eco del protocolo de mensajes de Control de Internet (ICMP) y recibir el mensaje de respuesta de eco ICMP correspondiente finaliza o se cancela.

Las aplicaciones utilizan la clase Ping para detectar si un equipo remoto es accesible.

Topología de red puede determinar si Ping ponerse en contacto con un host remoto. La presencia y configuración de servidores proxy, equipos de red dirección translation (NAT) o firewalls pueden evitar que Ping con éxito. Una correcta Ping solo indica que el control remoto se puede alcanzar el host en la red; la presencia de servicios de nivel superior (por ejemplo, un servidor Web) en el host remoto no está garantizada.

Esta clase proporciona una funcionalidad similar a la herramienta de línea de comandos Ping.exe. El Send y SendAsync métodos envían un mensaje de solicitud de eco de protocolo de mensajes de Control de Internet (ICMP) a un equipo remoto y espera un mensaje de respuesta de eco ICMP de ese equipo. Para obtener una descripción detallada de los mensajes de ICMP, consulte RFC 792, disponible en http://www.ietf.org.

Los siguientes tipos se utilizan con la clase Ping y se describen en detalle a continuación.

Nombre de tipo

Descripción

IPStatus

Define códigos de estado que describen el resultado de un mensaje de solicitud de eco ICMP.

PingOptions

Permite configurar o recuperar la configuración que controla el número de veces que el paquete de solicitud se puede reenviar (Ttl), y si se puede fragmentar (DontFragment ).

PingReply

Contiene los resultados de una solicitud de eco ICMP.

PingException

Se produce si se produce un error irrecuperable.

PingCompletedEventArgs

Contiene los datos asociados con eventos PingCompleted, que se generan cuando una llamada SendAsync se completa o se cancela.

PingCompletedEventHandler

Delegado que proporciona el método de devolución de llamada invoca cuando un SendAsync llamada completa o se cancela.

El Send y SendAsync métodos devuelven la respuesta en un PingReply objeto. El PingReply.Status devuelve un IPStatus valor para indicar el resultado de la solicitud.

Al enviar la solicitud, debe especificar el equipo remoto. Puede hacer esto proporcionando una dirección IP en formato de cadena, cadena de nombre de un host o un IPAddress objeto.

También puede especificar cualquiera de los siguientes tipos de información:

  • Datos que acompañan a la solicitud. Especificar buffer le permite aprender la cantidad de tiempo necesario para que un paquete de un tamaño determinado viaje hacia y desde el host remoto y la unidad de transmisión máxima de la ruta de acceso de red. (Consulte la Send o SendAsync sobrecargas que toman un buffer parámetro.)

  • Si el paquete de eco ICMP puede fragmentarse durante la transmisión. (Consulte la DontFragment propiedad y Send o SendAsync sobrecargas que toman un options parámetro.)

  • Cuántas veces nodos de enrutamiento, como enrutadores o puertas de enlace, puede reenviar el paquete antes de que llegue al equipo de destino o se descarta. (Consulte Ttl y Send o SendAsync sobrecargas que toman un options parámetro.)

  • El límite de tiempo dentro del cual se debe recibir la respuesta. (Consulte la Send o SendAsync sobrecargas que toman un timeout parámetro.

La Ping clase ofrece métodos sincrónicos y asincrónicos para enviar la solicitud. Si la aplicación debe bloquearse mientras espera una respuesta, utilice la Send métodos; estos métodos son sincrónicos. Si la aplicación no debe bloquearse, utilice asincrónica SendAsync métodos. Una llamada a SendAsync se ejecuta en su propio subproceso que se asigna automáticamente del grupo de subprocesos. Cuando la operación asincrónica finaliza, provoca la PingCompleted eventos. Las aplicaciones utilizan un PingCompletedEventHandler delegado para especificar el método que se llama para PingCompleted eventos. Debe agregar una PingCompletedEventHandler delegado al evento antes de llamar a SendAsync. El método del delegado recibe un PingCompletedEventArgs objeto que contiene un PingReply objeto que describe el resultado de la SendAsync llamar.

No puede usar la misma instancia de la Ping clase para generar varias solicitudes de eco ICMP simultáneas. Llamar a Send mientras un SendAsync llamada está en curso o llamar a SendAsync varias veces antes de que todas las llamadas anteriores finalicen, se produce un InvalidOperationException.

En el ejemplo de código siguiente se muestra cómo utilizar el Ping clase sincrónicamente.

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

En el ejemplo de código siguiente se muestra cómo utilizar el Ping clase de forma asincrónica.

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
Disponible desde 2.0

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: