Ping Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee kan een toepassing bepalen of een externe computer toegankelijk is via het netwerk.
public ref class Ping : System::ComponentModel::Component, IDisposable
public ref class Ping : System::ComponentModel::Component
public class Ping : System.ComponentModel.Component, IDisposable
public class Ping : System.ComponentModel.Component
type Ping = class
inherit Component
interface IDisposable
type Ping = class
inherit Component
Public Class Ping
Inherits Component
Implements IDisposable
Public Class Ping
Inherits Component
- Overname
- Implementeringen
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u de Ping klasse synchroon gebruikt.
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);
}
}
}
}
open System.Net.NetworkInformation
open System.Text
// args[0] can be an IPaddress or host name.
[<EntryPoint>]
let main args =
let pingSender = new Ping()
// Use the default Ttl value which is 128,
// but change the fragmentation behavior.
let options = PingOptions()
options.DontFragment <- true
// Create a buffer of 32 bytes of data to be transmitted.
let data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
let buffer = Encoding.ASCII.GetBytes data
let timeout = 120
let reply: PingReply = pingSender.Send(args.[0], timeout, buffer, options)
match reply.Status with
| IPStatus.Success ->
printfn "Address: %O" reply.Address
printfn "RoundTrip time: %d" reply.RoundtripTime
printfn "Time to live: %d" reply.Options.Ttl
printfn "Don't fragment: %b" reply.Options.DontFragment
printfn "Buffer size: %d" reply.Buffer.Length
0
| _ ->
eprintfn "Error sending ping: %O" reply
eprintfn "Error was: %O" reply.Status
1
In het volgende codevoorbeeld ziet u hoe u de Ping klasse asynchroon gebruikt.
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);
}
}
}
}
Opmerkingen
Toepassingen gebruiken de Ping klasse om te detecteren of een externe computer bereikbaar is.
Netwerktopologie kan bepalen of Ping er verbinding kan worden gemaakt met een externe host. De aanwezigheid en configuratie van proxy's, NAT-apparatuur (Network Address Translation) of firewalls kunnen voorkomen dat Ping ze slagen. Een geslaagde Ping status geeft alleen aan dat de externe host op het netwerk kan worden bereikt. De aanwezigheid van services op een hoger niveau (zoals een webserver) op de externe host is niet gegarandeerd.
Deze klasse biedt functionaliteit die vergelijkbaar is met het opdrachtregelprogramma Ping.exe. De Send en SendAsync methoden verzenden een ICMP-echoaanvraagbericht (Internet Control Message Protocol) naar een externe computer en wachten op een ICMP-echoantwoordbericht van die computer. Zie RFC 792 voor een gedetailleerde beschrijving van ICMP-berichten, beschikbaar op https://www.ietf.org.
De volgende typen worden gebruikt met de Ping klasse en worden hieronder uitgebreid beschreven.
| Typenaam | Description |
|---|---|
| IPStatus | Definieert statuscodes die het resultaat van een ICMP-echoaanvraagbericht beschrijven. |
| PingOptions | Hiermee kunt u de instellingen configureren of ophalen waarmee wordt bepaald hoe vaak het aanvraagpakket kan worden doorgestuurd (Ttl) en of het kan worden gefragmenteerd (DontFragment ). |
| PingReply | Bevat de resultaten van een ICMP-echoaanvraag. |
| PingException | Gegenereerd als er een onherstelbare fout optreedt. |
| PingCompletedEventArgs | Bevat de gegevens die zijn gekoppeld aan PingCompleted gebeurtenissen die worden gegenereerd wanneer een SendAsync oproep is voltooid of wordt geannuleerd. |
| PingCompletedEventHandler | De gemachtigde die de callback-methode aanroept die wordt aangeroepen wanneer een SendAsync aanroep is voltooid of wordt geannuleerd. |
De Send en SendAsync methoden retourneren het antwoord in een PingReply object. De PingReply.Status eigenschap retourneert een IPStatus waarde om het resultaat van de aanvraag aan te geven.
Wanneer u de aanvraag verzendt, moet u de externe computer opgeven. U kunt dit doen door een hostnaamtekenreeks, een IP-adres in tekenreeksindeling of een IPAddress object op te geven.
U kunt ook een van de volgende typen gegevens opgeven:
Gegevens die bij de aanvraag horen.
bufferDoor op te geven kunt u de hoeveelheid tijd leren die nodig is voor een pakket van een bepaalde grootte om naar en van de externe host en de maximale transmissie-eenheid van het netwerkpad te reizen. (Zie de Send of SendAsync overbelastingen die eenbufferparameter gebruiken.)Of het ICMP Echo-pakket kan worden gefragmenteerd tijdens de overdracht. (Zie de DontFragment eigenschap en de Send of SendAsync overbelastingen die een
optionsparameter nemen.)Hoe vaak routeringsknooppunten, zoals routers of gateways, het pakket kunnen doorsturen voordat het de doelcomputer bereikt of wordt verwijderd. (Zie Ttl en de Send of SendAsync overbelastingen die een
optionsparameter gebruiken.)De tijdslimiet waarbinnen het antwoord moet worden ontvangen. (Zie de Send of SendAsync overbelastingen die een
timeoutparameter gebruiken.
De Ping klasse biedt zowel synchrone als asynchrone methoden voor het verzenden van de aanvraag. Als uw toepassing moet blokkeren tijdens het wachten op een antwoord, gebruikt u de Send methoden. Deze methoden zijn synchroon. Als uw toepassing niet mag worden geblokkeerd, gebruikt u de asynchrone SendAsync methoden. Een aanroep om uit te SendAsync voeren in een eigen thread die automatisch wordt toegewezen vanuit de threadgroep. Wanneer de asynchrone bewerking is voltooid, wordt de PingCompleted gebeurtenis gegenereerd. Toepassingen gebruiken een PingCompletedEventHandler gemachtigde om de methode op te geven die wordt aangeroepen voor PingCompleted gebeurtenissen. U moet een PingCompletedEventHandler gemachtigde toevoegen aan de gebeurtenis voordat u aanroept SendAsync. De methode van de gemachtigde ontvangt een PingCompletedEventArgs object dat een PingReply object bevat dat het resultaat van de SendAsync aanroep beschrijft.
U kunt niet hetzelfde exemplaar van de Ping klasse gebruiken om meerdere gelijktijdige ICMP Echo-aanvragen te genereren. Bellen Send terwijl een SendAsync gesprek wordt uitgevoerd of meerdere keren wordt gebeld SendAsync voordat alle vorige oproepen zijn voltooid, veroorzaakt een InvalidOperationException.
Constructors
| Name | Description |
|---|---|
| Ping() |
Initialiseert een nieuw exemplaar van de Ping klasse. |
Eigenschappen
| Name | Description |
|---|---|
| CanRaiseEvents |
Hiermee wordt een waarde opgehaald die aangeeft of het onderdeel een gebeurtenis kan genereren. (Overgenomen van Component) |
| Container |
Hiermee haalt u het IContainer bestand op dat de Component. (Overgenomen van Component) |
| DesignMode |
Hiermee wordt een waarde opgehaald die aangeeft of de Component momenteel in de ontwerpmodus is. (Overgenomen van Component) |
| Events |
Hiermee haalt u de lijst met gebeurtenis-handlers op die aan dit Componentbestand zijn gekoppeld. (Overgenomen van Component) |
| Site |
Haalt of stelt de ISite van de Component. (Overgenomen van Component) |
Methoden
| Name | Description |
|---|---|
| CreateObjRef(Type) |
Hiermee maakt u een object dat alle relevante informatie bevat die nodig is om een proxy te genereren die wordt gebruikt om te communiceren met een extern object. (Overgenomen van MarshalByRefObject) |
| Dispose() |
Alle resources die worden gebruikt door de Component. (Overgenomen van Component) |
| Dispose(Boolean) |
Publiceert de niet-beheerde resources die door het Ping object worden gebruikt en verwijdert desgewenst de beheerde resources. |
| Dispose(Boolean) |
Publiceert de niet-beheerde resources die worden gebruikt door de Component beheerde resources en brengt eventueel de beheerde resources vrij. (Overgenomen van Component) |
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetLifetimeService() |
Hiermee haalt u het huidige levensduurserviceobject op waarmee het levensduurbeleid voor dit exemplaar wordt beheerd. (Overgenomen van MarshalByRefObject) |
| GetService(Type) |
Hiermee wordt een object geretourneerd dat een service vertegenwoordigt die wordt geleverd door of door de Component service Container. (Overgenomen van Component) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| InitializeLifetimeService() |
Hiermee haalt u een levensduurserviceobject op om het levensduurbeleid voor dit exemplaar te beheren. (Overgenomen van MarshalByRefObject) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| MemberwiseClone(Boolean) |
Hiermee maakt u een ondiepe kopie van het huidige MarshalByRefObject object. (Overgenomen van MarshalByRefObject) |
| OnPingCompleted(PingCompletedEventArgs) |
Hiermee wordt de PingCompleted gebeurtenis gegenereerd. |
| Send(IPAddress, Int32, Byte[], PingOptions) |
Hiermee probeert u een ICMP-echobericht (Internet Control Message Protocol) met de opgegeven gegevensbuffer te verzenden naar de computer waarop het opgegeven IPAddress en ontvangen van een corresponderend ICMP-echoantwoordbericht van die computer. Met deze overbelasting kunt u een time-outwaarde voor de bewerking opgeven en fragmentatie en Time-to-Live-waarden voor het ICMP-echoberichtpakket opgeven. |
| Send(IPAddress, Int32, Byte[]) |
Hiermee probeert u een ICMP-echobericht (Internet Control Message Protocol) met de opgegeven gegevensbuffer te verzenden naar de computer met de opgegeven IPAddresscomputer en ontvangt u een corresponderend ICMP-echoantwoordbericht van die computer. Met deze overbelasting kunt u een time-outwaarde voor de bewerking opgeven. |
| Send(IPAddress, Int32) |
Hiermee probeert u een ICMP-echobericht (Internet Control Message Protocol) met de opgegeven gegevensbuffer te verzenden naar de computer met de opgegeven IPAddresscomputer en ontvangt u een corresponderend ICMP-echoantwoordbericht van die computer. Met deze methode kunt u een time-outwaarde voor de bewerking opgeven. |
| Send(IPAddress) |
Hiermee probeert u een ICMP-echobericht (Internet Control Message Protocol) te verzenden naar de computer met de opgegeven IPAddresscomputer en ontvangt u een bijbehorend ICMP-echoantwoordbericht van die computer. |
| Send(String, Int32, Byte[], PingOptions) |
Hiermee probeert u een ICMP-echobericht (Internet Control Message Protocol) met de opgegeven gegevensbuffer naar de opgegeven computer te verzenden en ontvangt u een bijbehorend ICMP-echoantwoordbericht van die computer. Met deze overbelasting kunt u een time-outwaarde opgeven voor de bewerking en het beheren van fragmentatie en Time-to-Live-waarden voor het ICMP-pakket. |
| Send(String, Int32, Byte[]) |
Hiermee probeert u een ICMP-echobericht (Internet Control Message Protocol) met de opgegeven gegevensbuffer naar de opgegeven computer te verzenden en ontvangt u een bijbehorend ICMP-echoantwoordbericht van die computer. Met deze overbelasting kunt u een time-outwaarde voor de bewerking opgeven. |
| Send(String, Int32) |
Hiermee probeert u een ICMP-echobericht (Internet Control Message Protocol) naar de opgegeven computer te verzenden en ontvangt u een bijbehorend ICMP-echoantwoordbericht van die computer. Met deze methode kunt u een time-outwaarde voor de bewerking opgeven. |
| Send(String) |
Hiermee probeert u een ICMP-echobericht (Internet Control Message Protocol) naar de opgegeven computer te verzenden en ontvangt u een bijbehorend ICMP-echoantwoordbericht van die computer. |
| SendAsync(IPAddress, Int32, Byte[], Object) |
Asynchroon probeert een ICMP-echobericht (Internet Control Message Protocol) met de opgegeven gegevensbuffer te verzenden naar de computer waarop de opgegeven gegevensbuffer is opgegeven IPAddressen een corresponderend ICMP-echoantwoordbericht van die computer te ontvangen. Met deze overbelasting kunt u een time-outwaarde voor de bewerking opgeven. |
| SendAsync(IPAddress, Int32, Byte[], PingOptions, Object) |
Asynchroon probeert een ICMP-echobericht (Internet Control Message Protocol) met de opgegeven gegevensbuffer te verzenden naar de computer waarop de opgegeven gegevensbuffer is opgegeven IPAddressen een corresponderend ICMP-echoantwoordbericht van die computer te ontvangen. Met deze overbelasting kunt u een time-outwaarde voor de bewerking opgeven en fragmentatie en Time-to-Live-waarden voor het ICMP-echoberichtpakket opgeven. |
| SendAsync(IPAddress, Int32, Object) |
Asynchroon probeert een ICMP-echobericht (Internet Control Message Protocol) te verzenden naar de computer met de opgegeven IPAddresscomputer en een corresponderend ICMP-echoantwoordbericht van die computer te ontvangen. Met deze overbelasting kunt u een time-outwaarde voor de bewerking opgeven. |
| SendAsync(IPAddress, Object) |
Asynchroon probeert een ICMP-echobericht (Internet Control Message Protocol) te verzenden naar de computer met de opgegeven IPAddresscomputer en een corresponderend ICMP-echoantwoordbericht van die computer te ontvangen. |
| SendAsync(String, Int32, Byte[], Object) |
Asynchroon probeert een ICMP-echobericht (Internet Control Message Protocol) met de opgegeven gegevensbuffer naar de opgegeven computer te verzenden en een corresponderend ICMP-echoantwoordbericht van die computer te ontvangen. Met deze overbelasting kunt u een time-outwaarde voor de bewerking opgeven. |
| SendAsync(String, Int32, Byte[], PingOptions, Object) |
Asynchroon probeert een ICMP-echobericht (Internet Control Message Protocol) met de opgegeven gegevensbuffer naar de opgegeven computer te verzenden en een corresponderend ICMP-echoantwoordbericht van die computer te ontvangen. Met deze overbelasting kunt u een time-outwaarde opgeven voor de bewerking en het beheren van fragmentatie en Time-to-Live-waarden voor het ICMP-pakket. |
| SendAsync(String, Int32, Object) |
Asynchroon probeert een ICMP-echobericht (Internet Control Message Protocol) naar de opgegeven computer te verzenden en een corresponderend ICMP-echoantwoordbericht van die computer te ontvangen. Met deze overbelasting kunt u een time-outwaarde voor de bewerking opgeven. |
| SendAsync(String, Object) |
Asynchroon probeert een ICMP-echobericht (Internet Control Message Protocol) naar de opgegeven computer te verzenden en een corresponderend ICMP-echoantwoordbericht van die computer te ontvangen. |
| SendAsyncCancel() |
Hiermee annuleert u alle asynchrone aanvragen voor het verzenden van een ICMP-echobericht (Internet Control Message Protocol) en ontvangt u een bijbehorend ICMP-echoantwoordbericht. |
| SendPingAsync(IPAddress, Int32, Byte[], PingOptions) |
Hiermee wordt een ICMP-echobericht (Internet Control Message Protocol) met de opgegeven gegevensbuffer verzonden naar de computer waarop de opgegeven gegevensbuffer is opgegeven IPAddressen ontvangt u een corresponderend ICMP-echoantwoordbericht van die computer als asynchrone bewerking. Met deze overbelasting kunt u een time-outwaarde opgeven voor de bewerking, een buffer die moet worden gebruikt voor verzenden en ontvangen, en fragmentatie en Time-to-Live-waarden voor het ICMP-echoberichtpakket beheren. |
| SendPingAsync(IPAddress, Int32, Byte[]) |
Verzend een ICMP-echobericht (Internet Control Message Protocol) met de opgegeven gegevensbuffer naar de computer met de opgegeven IPAddresscomputer en ontvangt een overeenkomstig ICMP-echoantwoordbericht van die computer als asynchrone bewerking. Met deze overbelasting kunt u een time-outwaarde opgeven voor de bewerking en een buffer die moet worden gebruikt voor verzenden en ontvangen. |
| SendPingAsync(IPAddress, Int32) |
Verzend een ICMP-echobericht (Internet Control Message Protocol) met de opgegeven gegevensbuffer naar de computer met de opgegeven IPAddresscomputer en ontvangt een overeenkomstig ICMP-echoantwoordbericht van die computer als asynchrone bewerking. Met deze overbelasting kunt u een time-outwaarde voor de bewerking opgeven. |
| SendPingAsync(IPAddress) |
Verzend een ICMP-echobericht (Internet Control Message Protocol) met de opgegeven gegevensbuffer naar de computer met de opgegeven IPAddresscomputer en ontvangt een overeenkomstig ICMP-echoantwoordbericht van die computer als asynchrone bewerking. |
| SendPingAsync(String, Int32, Byte[], PingOptions) |
Hiermee verzendt u een ICMP-echobericht (Internet Control Message Protocol) met de opgegeven gegevensbuffer naar de opgegeven computer en ontvangt u een overeenkomstig ICMP-echoantwoordbericht van die computer als asynchrone bewerking. Met deze overbelasting kunt u een time-outwaarde opgeven voor de bewerking, een buffer die moet worden gebruikt voor verzenden en ontvangen, en fragmentatie en Time-to-Live-waarden voor het ICMP-echoberichtpakket beheren. |
| SendPingAsync(String, Int32, Byte[]) |
Hiermee verzendt u een ICMP-echobericht (Internet Control Message Protocol) met de opgegeven gegevensbuffer naar de opgegeven computer en ontvangt u een overeenkomstig ICMP-echoantwoordbericht van die computer als asynchrone bewerking. Met deze overbelasting kunt u een time-outwaarde opgeven voor de bewerking en een buffer die moet worden gebruikt voor verzenden en ontvangen. |
| SendPingAsync(String, Int32) |
Hiermee verzendt u een ICMP-echobericht (Internet Control Message Protocol) met de opgegeven gegevensbuffer naar de opgegeven computer en ontvangt u een overeenkomstig ICMP-echoantwoordbericht van die computer als asynchrone bewerking. Met deze overbelasting kunt u een time-outwaarde voor de bewerking opgeven. |
| SendPingAsync(String) |
Hiermee verzendt u een ICMP-echobericht (Internet Control Message Protocol) met de opgegeven gegevensbuffer naar de opgegeven computer en ontvangt u een overeenkomstig ICMP-echoantwoordbericht van die computer als asynchrone bewerking. |
| ToString() |
Retourneert een String met de naam van de Component, indien van toepassing. Deze methode mag niet worden overschreven. (Overgenomen van Component) |
gebeurtenis
| Name | Description |
|---|---|
| Disposed |
Treedt op wanneer het onderdeel wordt verwijderd door een aanroep naar de Dispose() methode. (Overgenomen van Component) |
| PingCompleted |
Treedt op wanneer een asynchrone bewerking voor het verzenden van een ICMP-echobericht (Internet Control Message Protocol) en het bijbehorende ICMP-echoantwoordbericht is voltooid of wordt geannuleerd. |
Expliciete interface-implementaties
| Name | Description |
|---|---|
| IDisposable.Dispose() |
Alle resources die door exemplaren van de Ping klasse worden gebruikt, worden vrijgegeven. |