Sends data asynchronously to a specific remote host.
Assembly: System.Net (in System.Net.dll)
Return ValueType: System.Boolean
Returns true if the I/O operation is pending. The Completed event on the e parameter will be raised upon completion of the operation.
Returns false if the I/O operation completed synchronously. In this case, the Completed event on the e parameter will not be raised and the e object passed as a parameter may be examined immediately after the method call returns to retrieve the result of the operation.
The SocketAsyncEventArgs.RemoteEndPoint cannot be null.
A socket operation was already in progress using the System.Net.Sockets.SocketAsyncEventArgs object specified in the e parameter.
The Socket has been closed.
The method starts an asynchronous send operation to the remote host specified in the RemoteEndPoint property of the e parameter. Calling the method gives you the ability to send data within a separate execution thread. Although this method is intended for connectionless sockets of type Dgram, the method also works with connection-oriented sockets of type Stream.
To be notified of completion, you must create a callback method that implements the EventHandler<SocketAsyncEventArgs> delegate and attach the callback to the SocketAsyncEventArgs.Completed event.
The following properties and events on the System.Net.Sockets.SocketAsyncEventArgs object are required to successfully call this method:
The caller may set the SocketAsyncEventArgs.UserToken property to any user state object desired before calling the method, so that the information will be retrievable in the callback method. If the callback needs more information than a single object, a small class can be created to hold the other required state information as members.
If you are using a connection-oriented socket of type Stream, you must first call the ConnectAsync method. Otherwise will throw a SocketException. When using a connection-oriented socket of type Stream, the method will ignore the SocketAsyncEventArgs.RemoteEndPoint property and send data to the System.Net.EndPoint established in the ConnectAsync method.
If you are using a connectionless socket of type Dgram, you do not need to establish a default remote host with the ConnectAsync method prior to calling . You only need to do this if you intend to call the SendAsync method. If you do call the ConnectAsync method prior to calling , the SocketAsyncEventArgs.RemoteEndPoint property will override the specified default remote host for that send operation only.
For a message-oriented socket of type Dgram, care must be taken not to exceed the maximum message size of the underlying transport. If the size of the buffer exceeds the maximum packet size of the underlying service provider, the datagram is not sent and will throw a SocketException. The successful completion of a method does not indicate that the data was successfully delivered to the remote host. A successful completion only indicates that the data was successfully sent on the network from the local computer.
If you receive a SocketException when calling this method, use the SocketException.ErrorCode property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets Error Codes documentation in the MSDN library for a detailed description of the error.
Silverlight for the desktop
Do not use for a Silverlight for the desktop application.
For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.