Ping.SendAsync Method (IPAddress, Int32, Byte, PingOptions, Object)
Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer. This overload allows you to specify a time-out value for the operation and control fragmentation and Time-to-Live values for the ICMP echo message packet.
Assembly: System (in System.dll)
[<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)>] member SendAsync : address:IPAddress * timeout:int * buffer:byte * options:PingOptions * userToken:Object -> unit
- Type: System.Net.IPAddress
An IPAddress that identifies the computer that is the destination for the ICMP echo message.
- Type: System.Int32
An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.
- Type: System.Byte
A Byte array that contains data to be sent with the ICMP echo message and returned in the ICMP echo reply message. The array cannot contain more than 65,500 bytes.
- Type: System.Net.NetworkInformation.PingOptions
A PingOptions object used to control fragmentation and Time-to-Live values for the ICMP echo message packet.
- Type: System.Object
An object that is passed to the method invoked when the asynchronous operation completes.
address is a null reference (Nothing in Visual Basic).
buffer is a null reference (Nothing in Visual Basic).
timeout is less than zero.
A call to SendAsync is in progress.
address is an IPv6 address and the local computer is running an operating system earlier than Windows 2000.
An exception was thrown while sending or receiving the ICMP messages. See the inner exception for the exact exception that was thrown.
address is not a valid IP address.
This object has been disposed.
The size of buffer exceeds 65500 bytes.
The SendAsync method sends the Echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. Call the SendAsync method when your application must not block. Each call executes in a separate thread that is automatically allocated from the thread pool. When the asynchronous operation completes, it raises the PingCompleted event. Applications use a PingCompletedEventHandler delegate to specify the method that is called when SendAsync raises the event. You must add a PingCompletedEventHandler delegate to the event before calling SendAsync. The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. The PingCompletedEventArgs object inherits the UserState property. This property contains the userToken object passed into the SendAsync call.
If your application blocks while waiting for a reply, use the Send methods; these methods are synchronous.
When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.
If the DontFragment property is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. When this happens, the Status is set to PacketTooBig.
Use the Ttl property to specify the maximum number of times the ICMP echo message can be forwarded before reaching its destination. If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. When this happens, the Status is set to TtlExpired.
The HostProtectionAttribute attribute applied to this type or member has the following Resources property value: ExternalThreading. The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser). For more information, see the HostProtectionAttribute class or SQL Server Programming and Host Protection Attributes.
The following code example demonstrates how to call this method. For an implementation of the callback method, see the SendAsync method overload example section.
The following code example requires the following namespaces:
The following code example sends an ICMP echo message asynchronously.
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.