Ping.SendAsync Methode
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.
Asynchroon probeert een ICMP-echobericht (Internet Control Message Protocol) naar een computer te verzenden en een bijbehorend ICMP-echoantwoordbericht van die computer te ontvangen.
Overloads
| Name | Description |
|---|---|
| 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(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(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(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, 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(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. |
| 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, 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. |
Opmerkingen
Deze methoden zorgen er niet voor dat de hoofdthread van uw toepassing wordt geblokkeerd. Als u wilt blokkeren tijdens het wachten op het ICMP-echoantwoordbericht, gebruikt u de Send methoden.
Note
Het IP-adres dat door een van de SendAsync methoden wordt geretourneerd, kan afkomstig zijn van een schadelijke externe computer. Maak hiervoor geen verbinding met de externe computer. Gebruik DNS om het IP-adres te bepalen van de computer waarmee u verbinding wilt maken.
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.
public:
void SendAsync(System::String ^ hostNameOrAddress, int timeout, cli::array <System::Byte> ^ buffer, System::Net::NetworkInformation::PingOptions ^ options, System::Object ^ userToken);
public void SendAsync(string hostNameOrAddress, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions options, object userToken);
member this.SendAsync : string * int * byte[] * System.Net.NetworkInformation.PingOptions * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, timeout As Integer, buffer As Byte(), options As PingOptions, userToken As Object)
Parameters
- hostNameOrAddress
- String
Een String die de computer identificeert die de bestemming is voor het ICMP-echobericht. De waarde die voor deze parameter is opgegeven, kan een hostnaam of een tekenreeksweergave van een IP-adres zijn.
- timeout
- Int32
Een Int32 waarde die het maximum aantal milliseconden aangeeft (nadat het echobericht is verzonden) om te wachten op het ICMP-antwoordbericht.
- buffer
- Byte[]
Een Byte matrix die gegevens bevat die moeten worden verzonden met het ICMP-echobericht en geretourneerd in het ICMP-antwoordbericht. De matrix mag niet meer dan 65.500 bytes bevatten.
- options
- PingOptions
Een PingOptions object dat wordt gebruikt om fragmentatie en Time-to-Live-waarden voor het ICMP-echoberichtpakket te beheren.
- userToken
- Object
Een object dat wordt doorgegeven aan de methode die wordt aangeroepen wanneer de asynchrone bewerking is voltooid.
Uitzonderingen
hostNameOrAddress is null of is een lege tekenreeks ("").
– of –
buffer is null.
timeout is kleiner dan nul.
Er wordt een aanroep uitgevoerd SendAsync .
Er is een uitzondering opgetreden tijdens het verzenden of ontvangen van de ICMP-berichten. Zie de interne uitzondering voor de exacte uitzondering die is gegenereerd.
hostNameOrAddress kan niet worden omgezet naar een geldig IP-adres.
Dit object is verwijderd.
De grootte van buffer meer dan 65500 bytes.
.NET 7 en nieuwere versies alleen op Linux: het proces is niet bevoegd en buffer is niet leeg.
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u deze methode aanroept.
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
De SendAsync methode verzendt het echobericht asynchroon en retourneert de status naar uw toepassing wanneer de bewerking is voltooid (geslaagd of mislukt). Roep de SendAsync methode aan wanneer uw toepassing niet mag worden geblokkeerd. Elke aanroep wordt uitgevoerd in een afzonderlijke 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 wanneer SendAsync de gebeurtenis wordt gegenereerd. 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. Het PingCompletedEventArgs object neemt de UserState eigenschap over. Deze eigenschap bevat het userToken object dat is doorgegeven aan de SendAsync aanroep.
Als uw toepassing moet blokkeren tijdens het wachten op een antwoord, gebruikt u de Send methoden. Deze methoden zijn synchroon.
Als het ICMP-echoantwoordbericht niet wordt ontvangen binnen de tijd die is opgegeven door de timeout parameter, mislukt de ICMP-echo en wordt de Status eigenschap ingesteld op TimedOut.
Note
Wanneer u zeer kleine getallen timeoutopgeeft, kan het Ping-antwoord worden ontvangen, zelfs als timeout milliseconden zijn verstreken.
Als de DontFragment eigenschap is true en de totale pakketgrootte de maximale pakketgrootte overschrijdt die kan worden verzonden door een van de routeringsknooppunten tussen de lokale en externe computers, mislukt de ICMP-echoaanvraag. Als dit gebeurt, is de Status optie ingesteld op PacketTooBig.
Gebruik de Ttl eigenschap om het maximum aantal keren op te geven dat het ICMP-echobericht kan worden doorgestuurd voordat het de bestemming bereikt. Als het pakket de bestemming niet bereikt nadat het opgegeven aantal keren is doorgestuurd, wordt het pakket verwijderd en mislukt de ICMP-echoaanvraag. Als dit gebeurt, is de Status optie ingesteld op TtlExpired.
Van toepassing op
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.
public:
void SendAsync(System::Net::IPAddress ^ address, int timeout, cli::array <System::Byte> ^ buffer, System::Net::NetworkInformation::PingOptions ^ options, System::Object ^ userToken);
public void SendAsync(System.Net.IPAddress address, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions options, object userToken);
member this.SendAsync : System.Net.IPAddress * int * byte[] * System.Net.NetworkInformation.PingOptions * obj -> unit
Public Sub SendAsync (address As IPAddress, timeout As Integer, buffer As Byte(), options As PingOptions, userToken As Object)
Parameters
- address
- IPAddress
Een IPAddress die de computer identificeert die de bestemming is voor het ICMP-echobericht.
- timeout
- Int32
Een Int32 waarde die het maximum aantal milliseconden aangeeft (nadat het echobericht is verzonden) om te wachten op het ICMP-antwoordbericht.
- buffer
- Byte[]
Een Byte matrix die gegevens bevat die moeten worden verzonden met het ICMP-echobericht en geretourneerd in het ICMP-antwoordbericht. De matrix mag niet meer dan 65.500 bytes bevatten.
- options
- PingOptions
Een PingOptions object dat wordt gebruikt om fragmentatie en Time-to-Live-waarden voor het ICMP-echoberichtpakket te beheren.
- userToken
- Object
Een object dat wordt doorgegeven aan de methode die wordt aangeroepen wanneer de asynchrone bewerking is voltooid.
Uitzonderingen
address of buffer is null.
timeout is kleiner dan nul.
Er wordt een aanroep uitgevoerd SendAsync .
Er is een uitzondering opgetreden tijdens het verzenden of ontvangen van de ICMP-berichten. Zie de interne uitzondering voor de exacte uitzondering die is gegenereerd.
address is geen geldig IP-adres.
Dit object is verwijderd.
De grootte van buffer meer dan 65500 bytes.
.NET 7 en nieuwere versies alleen op Linux: het proces is niet bevoegd en buffer is niet leeg.
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u deze methode aanroept. Zie de voorbeeldsectie overbelasting van de methode voor overbelasting van de methode voor een implementatie van de SendAsync callback-methode.
Voor het volgende codevoorbeeld zijn de volgende naamruimten vereist:
using System;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading;
In het volgende codevoorbeeld wordt asynchroon een ICMP-echobericht verzonden.
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.");
}
Opmerkingen
De SendAsync methode verzendt het echobericht asynchroon en retourneert de status naar uw toepassing wanneer de bewerking is voltooid (geslaagd of mislukt). Roep de SendAsync methode aan wanneer uw toepassing niet mag worden geblokkeerd. Elke aanroep wordt uitgevoerd in een afzonderlijke 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 wanneer SendAsync de gebeurtenis wordt gegenereerd. 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. Het PingCompletedEventArgs object neemt de UserState eigenschap over. Deze eigenschap bevat het userToken object dat is doorgegeven aan de SendAsync aanroep.
Als uw toepassing blokkeert tijdens het wachten op een antwoord, gebruikt u de Send methoden. Deze methoden zijn synchroon.
Als het ICMP-echoantwoordbericht niet wordt ontvangen binnen de tijd die is opgegeven door de timeout parameter, mislukt de ICMP-echo en wordt de Status eigenschap ingesteld op TimedOut.
Note
Wanneer u zeer kleine getallen timeoutopgeeft, kan het Ping-antwoord worden ontvangen, zelfs als timeout milliseconden zijn verstreken.
Als de DontFragment eigenschap is true en de totale pakketgrootte de maximale pakketgrootte overschrijdt die kan worden verzonden door een van de routeringsknooppunten tussen de lokale en externe computers, mislukt de ICMP-echoaanvraag. Als dit gebeurt, is de Status optie ingesteld op PacketTooBig.
Gebruik de Ttl eigenschap om het maximum aantal keren op te geven dat het ICMP-echobericht kan worden doorgestuurd voordat het de bestemming bereikt. Als het pakket de bestemming niet bereikt nadat het opgegeven aantal keren is doorgestuurd, wordt het pakket verwijderd en mislukt de ICMP-echoaanvraag. Als dit gebeurt, is de Status optie ingesteld op TtlExpired.
Van toepassing op
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.
public:
void SendAsync(System::String ^ hostNameOrAddress, int timeout, cli::array <System::Byte> ^ buffer, System::Object ^ userToken);
public void SendAsync(string hostNameOrAddress, int timeout, byte[] buffer, object userToken);
member this.SendAsync : string * int * byte[] * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, timeout As Integer, buffer As Byte(), userToken As Object)
Parameters
- hostNameOrAddress
- String
Een String die de computer identificeert die de bestemming is voor het ICMP-echobericht. De waarde die voor deze parameter is opgegeven, kan een hostnaam of een tekenreeksweergave van een IP-adres zijn.
- timeout
- Int32
Een Int32 waarde die het maximum aantal milliseconden aangeeft (nadat het echobericht is verzonden) om te wachten op het ICMP-antwoordbericht.
- buffer
- Byte[]
Een Byte matrix die gegevens bevat die moeten worden verzonden met het ICMP-echobericht en geretourneerd in het ICMP-antwoordbericht. De matrix mag niet meer dan 65.500 bytes bevatten.
- userToken
- Object
Een object dat wordt doorgegeven aan de methode die wordt aangeroepen wanneer de asynchrone bewerking is voltooid.
Uitzonderingen
hostNameOrAddress is null of is een lege tekenreeks ("").
– of –
buffer is null.
timeout is kleiner dan nul.
Er wordt een aanroep uitgevoerd SendAsync .
Er is een uitzondering opgetreden tijdens het verzenden of ontvangen van de ICMP-berichten. Zie de interne uitzondering voor de exacte uitzondering die is gegenereerd.
hostNameOrAddress kan niet worden omgezet naar een geldig IP-adres.
Dit object is verwijderd.
De grootte van buffer meer dan 65500 bytes.
.NET 7 en nieuwere versies alleen op Linux: het proces is niet bevoegd en buffer is niet leeg.
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u een SendAsync overbelasting aanroept. Zie het Ping klasseoverzicht.
Opmerkingen
De SendAsync methode verzendt het echobericht asynchroon en retourneert de status naar uw toepassing wanneer de bewerking is voltooid (geslaagd of mislukt). Roep de SendAsync methode aan wanneer uw toepassing niet mag worden geblokkeerd. Elke aanroep wordt uitgevoerd in een afzonderlijke 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 wanneer SendAsync de gebeurtenis wordt gegenereerd. U moet een PingCompletedEventHandler gemachtigde toevoegen aan de gebeurtenis voordat u aanroept SendAsync. De methode van de gemachtigde ontvangt een PingCompletedEventArgs object met een PingReply object dat het resultaat van de SendAsync aanroep beschrijft. Het PingCompletedEventArgs object neemt de UserState eigenschap over. Deze eigenschap bevat het userToken object dat is doorgegeven aan de SendAsync aanroep.
Als uw toepassing moet blokkeren tijdens het wachten op een antwoord, gebruikt u de Send methoden. Deze methoden zijn synchroon.
Als het ICMP-echoantwoordbericht niet wordt ontvangen binnen de tijd die is opgegeven door de timeout parameter, mislukt de ICMP-echo en wordt de Status eigenschap ingesteld op TimedOut.
Note
Wanneer u zeer kleine getallen timeoutopgeeft, kan het Ping-antwoord worden ontvangen, zelfs als timeout milliseconden zijn verstreken.
Deze overbelasting maakt gebruik van standaardinstellingen voor pakketfragmentatie en het doorsturen van pakketten. Het pakket dat het ICMP-echobericht bevat, kan tijdens de overdracht worden gefragmenteerd als de totale pakketgrootte groter is dan de maximale pakketgrootte die kan worden verzonden door een van de routeringsknooppunten tussen de lokale en externe computers. Als u fragmentatie wilt voorkomen, gebruikt u een van de SendAsync methoden die een options parameter gebruiken en stelt u de DontFragment eigenschap in op true. Wanneer DontFragment is true en de totale pakketgrootte de maximale pakketgrootte overschrijdt die kan worden verzonden door een van de routeringsknooppunten tussen de lokale en externe computers, mislukt de ICMP-echoaanvraag. Als dit gebeurt, is de Status optie ingesteld op PacketTooBig. Het pakket- of pakketfragmenten (indien gefragmenteerd) kunnen 128 keer worden doorgestuurd door routeringsknooppunten voordat ze worden verwijderd. Als u deze instelling wilt wijzigen, gebruikt u een SendAsync overbelasting die een options parameter gebruikt en stelt u de Ttl eigenschap in op de gewenste waarde. Als het pakket de bestemming niet bereikt nadat het opgegeven aantal keren is doorgestuurd, wordt het pakket verwijderd en mislukt de ICMP-echoaanvraag. Als dit gebeurt, is de Status optie ingesteld op TtlExpired.
Van toepassing op
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.
public:
void SendAsync(System::Net::IPAddress ^ address, int timeout, cli::array <System::Byte> ^ buffer, System::Object ^ userToken);
public void SendAsync(System.Net.IPAddress address, int timeout, byte[] buffer, object userToken);
member this.SendAsync : System.Net.IPAddress * int * byte[] * obj -> unit
Public Sub SendAsync (address As IPAddress, timeout As Integer, buffer As Byte(), userToken As Object)
Parameters
- address
- IPAddress
Een IPAddress die de computer identificeert die de bestemming is voor het ICMP-echobericht.
- timeout
- Int32
Een Int32 waarde die het maximum aantal milliseconden aangeeft (nadat het echobericht is verzonden) om te wachten op het ICMP-antwoordbericht.
- buffer
- Byte[]
Een Byte matrix die gegevens bevat die moeten worden verzonden met het ICMP-echobericht en geretourneerd in het ICMP-antwoordbericht. De matrix mag niet meer dan 65.500 bytes bevatten.
- userToken
- Object
Een object dat wordt doorgegeven aan de methode die wordt aangeroepen wanneer de asynchrone bewerking is voltooid.
Uitzonderingen
address of buffer is null.
timeout is kleiner dan nul.
Er wordt een aanroep uitgevoerd SendAsync .
Er is een uitzondering opgetreden tijdens het verzenden of ontvangen van de ICMP-berichten. Zie de interne uitzondering voor de exacte uitzondering die is gegenereerd.
address is geen geldig IP-adres.
Dit object is verwijderd.
De grootte van buffer meer dan 65500 bytes.
.NET 7 en nieuwere versies alleen op Linux: het proces is niet bevoegd en buffer is niet leeg.
Voorbeelden
Zie het Ping klasseoverzicht voor een codevoorbeeld waarin het aanroepen van een SendAsync overbelasting wordt gedemonstreert.
Opmerkingen
Met deze methode wordt het echobericht asynchroon verzonden en wordt de status geretourneerd naar uw toepassing wanneer de bewerking is voltooid (geslaagd of mislukt). Roep de SendAsync methode aan wanneer uw toepassing niet mag worden geblokkeerd. Elke aanroep wordt uitgevoerd in een afzonderlijke thread die automatisch wordt toegewezen vanuit de threadgroep. Wanneer de asynchrone bewerking is voltooid, wordt de PingCompleted gebeurtenis gegenereerd. Als u de methode wilt opgeven die wordt aangeroepen wanneer SendAsync de gebeurtenis wordt gegenereerd, moet u een PingCompletedEventHandler gemachtigde aan de gebeurtenis toevoegen 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. Het PingCompletedEventArgs object neemt de UserState eigenschap over. Deze eigenschap bevat het userToken object dat is doorgegeven aan de SendAsync aanroep.
Note
Als uw toepassing blokkeert tijdens het wachten op een antwoord, gebruikt u de Send methoden. Deze methoden zijn synchroon.
Als het ICMP-echoantwoordbericht niet wordt ontvangen binnen de tijd die is opgegeven door de timeout parameter, mislukt de ICMP-echo en wordt de Status eigenschap ingesteld op TimedOut.
Note
Wanneer u zeer kleine getallen timeoutopgeeft, kan het Ping-antwoord worden ontvangen, zelfs als timeout milliseconden zijn verstreken.
Deze overbelasting maakt gebruik van standaardinstellingen voor pakketfragmentatie en het doorsturen van pakketten. Het pakket dat het ICMP-echobericht bevat, kan tijdens de overdracht worden gefragmenteerd als de totale pakketgrootte groter is dan de maximale pakketgrootte die kan worden verzonden door een van de routeringsknooppunten tussen de lokale en externe computers. Als u fragmentatie wilt voorkomen, gebruikt u een van de SendAsync methoden die een options parameter gebruiken en stelt u de DontFragment eigenschap in op true. Wanneer DontFragment is true en de totale pakketgrootte de maximale pakketgrootte overschrijdt die kan worden verzonden door een van de routeringsknooppunten tussen de lokale en externe computers, mislukt de ICMP-echoaanvraag. Als dit gebeurt, is de Status optie ingesteld op PacketTooBig. Het pakket- of pakketfragmenten (indien gefragmenteerd) kunnen 128 keer worden doorgestuurd door routeringsknooppunten voordat ze worden verwijderd. Als u deze instelling wilt wijzigen, gebruikt u een SendAsync overbelasting die een options parameter gebruikt en stelt u de Ttl eigenschap in op de gewenste waarde. Als het pakket de bestemming niet bereikt nadat het opgegeven aantal keren is doorgestuurd, wordt het pakket verwijderd en mislukt de ICMP-echoaanvraag. Als dit gebeurt, is de Status optie ingesteld op TtlExpired.
Van toepassing op
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.
public:
void SendAsync(System::Net::IPAddress ^ address, int timeout, System::Object ^ userToken);
public void SendAsync(System.Net.IPAddress address, int timeout, object userToken);
member this.SendAsync : System.Net.IPAddress * int * obj -> unit
Public Sub SendAsync (address As IPAddress, timeout As Integer, userToken As Object)
Parameters
- address
- IPAddress
Een IPAddress die de computer identificeert die de bestemming is voor het ICMP-echobericht.
- timeout
- Int32
Een Int32 waarde die het maximum aantal milliseconden aangeeft (nadat het echobericht is verzonden) om te wachten op het ICMP-antwoordbericht.
- userToken
- Object
Een object dat wordt doorgegeven aan de methode die wordt aangeroepen wanneer de asynchrone bewerking is voltooid.
Uitzonderingen
address is null.
timeout is kleiner dan nul.
Er wordt een aanroep naar SendAsync(IPAddress, Int32, Byte[], Object) de methode uitgevoerd.
Er is een uitzondering opgetreden tijdens het verzenden of ontvangen van de ICMP-berichten. Zie de interne uitzondering voor de exacte uitzondering die is gegenereerd.
address is geen geldig IP-adres.
Dit object is verwijderd.
Voorbeelden
Zie het Ping klasseoverzicht voor een codevoorbeeld waarin het aanroepen van een SendAsync overbelasting wordt gedemonstreert.
Opmerkingen
De SendAsync methode verzendt het echobericht asynchroon en retourneert de status naar uw toepassing wanneer de bewerking is voltooid (geslaagd of mislukt). Roep de SendAsync methode aan wanneer uw toepassing niet mag worden geblokkeerd. Elke aanroep wordt uitgevoerd in een afzonderlijke 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 wanneer SendAsync de gebeurtenis wordt gegenereerd. 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. Het PingCompletedEventArgs object neemt de UserState eigenschap over. Deze eigenschap bevat het userToken object dat is doorgegeven aan de SendAsync aanroep.
Als uw toepassing moet blokkeren tijdens het wachten op een antwoord, gebruikt u de Send methoden. Deze methoden zijn synchroon.
Als het ICMP-echoantwoordbericht niet wordt ontvangen binnen de tijd die is opgegeven door de timeout parameter, mislukt de ICMP-echo en wordt de Status eigenschap ingesteld op TimedOut.
Note
Wanneer u zeer kleine getallen timeoutopgeeft, kan het Ping-antwoord worden ontvangen, zelfs als timeout milliseconden zijn verstreken.
Deze overbelasting maakt gebruik van standaardinstellingen voor pakketfragmentatie en het doorsturen van pakketten. Het pakket dat het ICMP-echobericht bevat, kan tijdens de overdracht worden gefragmenteerd als de totale pakketgrootte groter is dan de maximale pakketgrootte die kan worden verzonden door een van de routeringsknooppunten tussen de lokale en externe computers. Als u fragmentatie wilt voorkomen, gebruikt u een van de SendAsync methoden die een options parameter gebruiken en stelt u de DontFragment eigenschap in op true. Wanneer DontFragment is true en de totale pakketgrootte de maximale pakketgrootte overschrijdt die kan worden verzonden door een van de routeringsknooppunten tussen de lokale en externe computers, mislukt de ICMP-echoaanvraag. Als dit gebeurt, is de Status optie ingesteld op PacketTooBig. Het pakket- of pakketfragmenten (indien gefragmenteerd) kunnen 128 keer worden doorgestuurd door routeringsknooppunten voordat ze worden verwijderd. Als u deze instelling wilt wijzigen, gebruikt u een SendAsync overbelasting die een options parameter gebruikt en stelt u de Ttl eigenschap in op de gewenste waarde. Als het pakket de bestemming niet bereikt nadat het opgegeven aantal keren is doorgestuurd, wordt het pakket verwijderd en mislukt de ICMP-echoaanvraag. Als dit gebeurt, is de Status optie ingesteld op TtlExpired.
Van toepassing op
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.
public:
void SendAsync(System::String ^ hostNameOrAddress, System::Object ^ userToken);
public void SendAsync(string hostNameOrAddress, object userToken);
member this.SendAsync : string * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, userToken As Object)
Parameters
- hostNameOrAddress
- String
Een String die de computer identificeert die de bestemming is voor het ICMP-echobericht. De waarde die voor deze parameter is opgegeven, kan een hostnaam of een tekenreeksweergave van een IP-adres zijn.
- userToken
- Object
Een object dat wordt doorgegeven aan de methode die wordt aangeroepen wanneer de asynchrone bewerking is voltooid.
Uitzonderingen
hostNameOrAddress is null of is een lege tekenreeks ("").
Er wordt een aanroep naar SendAsync(String, Object) de methode uitgevoerd.
Er is een uitzondering opgetreden tijdens het verzenden of ontvangen van de ICMP-berichten. Zie de interne uitzondering voor de exacte uitzondering die is gegenereerd.
hostNameOrAddress kan niet worden omgezet naar een geldig IP-adres.
Dit object is verwijderd.
Voorbeelden
Zie het Ping klasseoverzicht voor een codevoorbeeld waarin het aanroepen van de SendAsync methode wordt gedemonstreert.
Opmerkingen
De SendAsync methode verzendt het echobericht asynchroon en retourneert, wanneer de bewerking is voltooid (geslaagd of mislukt), de status naar uw toepassing. Roep de SendAsync methode aan wanneer uw toepassing niet mag worden geblokkeerd. Elke aanroep naar deze methode wordt uitgevoerd in een afzonderlijke thread die automatisch wordt toegewezen vanuit de threadgroep. Wanneer de asynchrone bewerking is voltooid, wordt de PingCompleted gebeurtenis gegenereerd. Als u de methode wilt opgeven die wordt aangeroepen wanneer SendAsync de gebeurtenis wordt gegenereerd, moet u een PingCompletedEventHandler gemachtigde aan de gebeurtenis toevoegen 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. Het PingCompletedEventArgs object neemt de UserState eigenschap over. Deze eigenschap bevat het userToken object dat is doorgegeven aan de SendAsync aanroep.
Note
Als uw toepassing moet blokkeren tijdens het wachten op een antwoord, gebruikt u de Send methoden. Deze methoden zijn synchroon.
Met deze methode wordt een gegevensbuffer van 32 Byte verzonden met het ICMP-echobericht. De methode wacht vijf seconden voor een ICMP-echoantwoordbericht. Als er op dat moment geen antwoord wordt ontvangen, wordt de methode geretourneerd en wordt de Status eigenschap ingesteld op TimedOut.
Deze overbelasting maakt gebruik van standaardinstellingen voor pakketfragmentatie en het doorsturen van pakketten. Het pakket dat het ICMP-echobericht bevat, kan tijdens de overdracht worden gefragmenteerd als de totale pakketgrootte groter is dan de maximale pakketgrootte die kan worden verzonden door een van de routeringsknooppunten tussen de lokale en externe computers. Als u fragmentatie wilt voorkomen, gebruikt u een van de SendAsync methoden die een options parameter gebruiken en stelt u de DontFragment eigenschap in op true. Wanneer DontFragment is true en de totale pakketgrootte de maximale pakketgrootte overschrijdt die kan worden verzonden door een van de routeringsknooppunten tussen de lokale en externe computers, mislukt de ICMP-echoaanvraag. Als dit gebeurt, is de Status optie ingesteld op PacketTooBig.
Het pakket of pakketfragmenten kunnen 128 keer worden doorgestuurd door routeringsknooppunten voordat ze worden verwijderd. Als u deze instelling wilt wijzigen, gebruikt u een SendAsync overbelasting die een options parameter gebruikt en stelt u de Ttl eigenschap in op de gewenste waarde. Als het pakket de bestemming niet bereikt nadat het opgegeven aantal keren is doorgestuurd, wordt het pakket verwijderd en mislukt de ICMP-echoaanvraag. Als dit gebeurt, is de Status optie ingesteld op TtlExpired.
Van toepassing op
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.
public:
void SendAsync(System::Net::IPAddress ^ address, System::Object ^ userToken);
public void SendAsync(System.Net.IPAddress address, object userToken);
member this.SendAsync : System.Net.IPAddress * obj -> unit
Public Sub SendAsync (address As IPAddress, userToken As Object)
Parameters
- address
- IPAddress
Een IPAddress die de computer identificeert die de bestemming is voor het ICMP-echobericht.
- userToken
- Object
Een object dat wordt doorgegeven aan de methode die wordt aangeroepen wanneer de asynchrone bewerking is voltooid.
Uitzonderingen
address is null.
Er wordt een aanroep naar de SendAsync methode uitgevoerd.
Er is een uitzondering opgetreden tijdens het verzenden of ontvangen van de ICMP-berichten. Zie de interne uitzondering voor de exacte uitzondering die is gegenereerd.
address is geen geldig IP-adres.
Dit object is verwijderd.
Voorbeelden
Zie het Ping klasseoverzicht voor een codevoorbeeld waarin het aanroepen van een SendAsync methode wordt gedemonstreert.
Opmerkingen
De SendAsync methode verzendt het echobericht asynchroon en retourneert, wanneer de bewerking is voltooid (geslaagd of mislukt), de status naar uw toepassing. Roep de SendAsync methode aan wanneer uw toepassing niet mag worden geblokkeerd. Elke aanroep naar deze methode wordt uitgevoerd in een afzonderlijke thread die automatisch wordt toegewezen vanuit de threadgroep. Wanneer de asynchrone bewerking is voltooid, wordt de PingCompleted gebeurtenis gegenereerd. Als u de methode wilt opgeven die wordt aangeroepen wanneer SendAsync de gebeurtenis wordt gegenereerd, moet u een PingCompletedEventHandler gemachtigde aan de gebeurtenis toevoegen 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. Het PingCompletedEventArgs object neemt de UserState eigenschap over. Deze eigenschap bevat het userToken object dat is doorgegeven aan de SendAsync aanroep.
Note
Als uw toepassing moet blokkeren tijdens het wachten op een antwoord, gebruikt u een van de Send methoden. Deze methoden zijn synchroon.
Met deze methode wordt een gegevensbuffer van 32 Byte verzonden met het ICMP-echobericht. De methode wacht vijf seconden voor een ICMP-echoantwoordbericht. Als er op dat moment geen antwoord wordt ontvangen, wordt de methode geretourneerd en wordt de Status eigenschap ingesteld op TimedOut.
Deze overbelasting maakt gebruik van standaardinstellingen voor pakketfragmentatie en het doorsturen van pakketten. Het pakket dat het ICMP-echobericht bevat, kan tijdens de overdracht worden gefragmenteerd als de totale pakketgrootte groter is dan de maximale pakketgrootte die kan worden verzonden door een van de routeringsknooppunten tussen de lokale en externe computers. Als u fragmentatie wilt voorkomen, gebruikt u een van de SendAsync methoden die een options parameter gebruiken en stelt u de DontFragment eigenschap in op true. Wanneer DontFragment is true en de totale pakketgrootte de maximale pakketgrootte overschrijdt die kan worden verzonden door een van de routeringsknooppunten tussen de lokale en externe computers, mislukt de ICMP-echoaanvraag. Als dit gebeurt, is de Status optie ingesteld op PacketTooBig.
Het pakket of pakketfragmenten kunnen 128 keer worden doorgestuurd door routeringsknooppunten voordat ze worden verwijderd. Als u deze instelling wilt wijzigen, gebruikt u een SendAsync overbelasting die een options parameter gebruikt en stelt u de Ttl eigenschap in op de gewenste waarde. Als het pakket de bestemming niet bereikt nadat het opgegeven aantal keren is doorgestuurd, wordt het pakket verwijderd en mislukt de ICMP-echoaanvraag. Als dit gebeurt, is de Status optie ingesteld op TtlExpired.
Van toepassing op
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.
public:
void SendAsync(System::String ^ hostNameOrAddress, int timeout, System::Object ^ userToken);
public void SendAsync(string hostNameOrAddress, int timeout, object userToken);
member this.SendAsync : string * int * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, timeout As Integer, userToken As Object)
Parameters
- hostNameOrAddress
- String
Een String die de computer identificeert die de bestemming is voor het ICMP-echobericht. De waarde die voor deze parameter is opgegeven, kan een hostnaam of een tekenreeksweergave van een IP-adres zijn.
- timeout
- Int32
Een Int32 waarde die het maximum aantal milliseconden aangeeft (nadat het echobericht is verzonden) om te wachten op het ICMP-antwoordbericht.
- userToken
- Object
Een object dat wordt doorgegeven aan de methode die wordt aangeroepen wanneer de asynchrone bewerking is voltooid.
Uitzonderingen
hostNameOrAddress is null of is een lege tekenreeks ("").
timeout is kleiner dan nul.
Er wordt een aanroep uitgevoerd SendAsync .
Er is een uitzondering opgetreden tijdens het verzenden of ontvangen van de ICMP-berichten. Zie de interne uitzondering voor de exacte uitzondering die is gegenereerd.
hostNameOrAddress kan niet worden omgezet naar een geldig IP-adres.
Dit object is verwijderd.
Voorbeelden
Zie het Ping klasseoverzicht voor een codevoorbeeld waarin het aanroepen van de SendAsync methode wordt gedemonstreert.
Opmerkingen
De SendAsync methode verzendt het echobericht asynchroon en retourneert de status naar uw toepassing wanneer de bewerking is voltooid (geslaagd of mislukt). Roep de SendAsync methode aan wanneer uw toepassing niet mag worden geblokkeerd. Elke aanroep wordt uitgevoerd in een afzonderlijke 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 wanneer SendAsync de gebeurtenis wordt gegenereerd. 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. Het PingCompletedEventArgs object neemt de UserState eigenschap over. Deze eigenschap bevat het userToken object dat is doorgegeven aan de SendAsync aanroep.
Als uw toepassing moet blokkeren tijdens het wachten op een antwoord, gebruikt u de Send methoden. Deze methoden zijn synchroon.
Als het ICMP-echoantwoordbericht niet wordt ontvangen binnen de tijd die is opgegeven door de timeout parameter, mislukt de ICMP-echo en wordt de Status eigenschap ingesteld op TimedOut.
Note
Wanneer u zeer kleine getallen timeoutopgeeft, kan het Ping-antwoord worden ontvangen, zelfs als timeout milliseconden zijn verstreken.
Deze overbelasting maakt gebruik van standaardinstellingen voor pakketfragmentatie en het doorsturen van pakketten. Het pakket dat het ICMP-echobericht bevat, kan tijdens de overdracht worden gefragmenteerd als de totale pakketgrootte groter is dan de maximale pakketgrootte die kan worden verzonden door een van de routeringsknooppunten tussen de lokale en externe computers. Als u fragmentatie wilt voorkomen, gebruikt u een van de SendAsync methoden die een options parameter gebruiken en stelt u de DontFragment eigenschap in op true. Wanneer DontFragment is true en de totale pakketgrootte de maximale pakketgrootte overschrijdt die kan worden verzonden door een van de routeringsknooppunten tussen de lokale en externe computers, mislukt de ICMP-echoaanvraag. Als dit gebeurt, is de Status optie ingesteld op PacketTooBig. Het pakket- of pakketfragmenten (indien gefragmenteerd) kunnen 128 keer worden doorgestuurd door routeringsknooppunten voordat ze worden verwijderd. Als u deze instelling wilt wijzigen, gebruikt u een SendAsync overbelasting die een options parameter gebruikt en stelt u de Ttl eigenschap in op de gewenste waarde. Als het pakket de bestemming niet bereikt nadat het opgegeven aantal keren is doorgestuurd, wordt het pakket verwijderd en mislukt de ICMP-echoaanvraag. Als dit gebeurt, is de Status optie ingesteld op TtlExpired.