Socket.SendAsync(SocketAsyncEventArgs) Método

Definición

Envía datos de forma asincrónica a un objeto conectado Socket .

public:
 bool SendAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendAsync(System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendAsync (e As SocketAsyncEventArgs) As Boolean

Parámetros

e
SocketAsyncEventArgs

Objeto SocketAsyncEventArgs que se va a usar para esta operación de socket asincrónico.

Devoluciones

true si la operación de E/S está pendiente. El Completed evento en el e parámetro se generará tras la finalización de la operación.

false si la operación de E/S se completó sincrónicamente. En este caso, Completed no se generará el evento en el e parámetro y el e objeto pasado como parámetro se puede examinar inmediatamente después de que la llamada al método devuelva para recuperar el resultado de la operación.

Excepciones

Las Buffer propiedades o BufferList del e parámetro deben hacer referencia a búferes válidos. Se puede establecer una o la otra de estas propiedades, pero no ambas al mismo tiempo.

Una operación de socket ya estaba en curso mediante el SocketAsyncEventArgs objeto especificado en el e parámetro .

el Socket objeto aún no está conectado o no se obtuvo a través de un Accept()método , AcceptAsync(SocketAsyncEventArgs)o BeginAccept, .

Comentarios

El SendAsync método se usa para escribir datos salientes de uno o varios búferes en un socket orientado a la conexión. Sin embargo, este método también se puede usar en sockets sin conexión que hayan especificado un host remoto en una operación de conexión.

El SendAsync método inicia una operación de envío asincrónica al host remoto establecido en el Acceptmétodo , AcceptAsync, BeginAccept, BeginConnect, Connecto ConnectAsync .

Se requieren las siguientes propiedades y eventos en el System.Net.Sockets.SocketAsyncEventArgs objeto para llamar correctamente a este método:

El autor de la llamada puede establecer la SocketAsyncEventArgs.UserToken propiedad en cualquier objeto de estado de usuario deseado antes de llamar al SendAsync método , de modo que la información se pueda recuperar en el método de devolución de llamada. Si la devolución de llamada necesita más información que un único objeto, se puede crear una clase pequeña para contener la otra información de estado necesaria como miembros.

El SendAsync método producirá una excepción si no llama primero a Accept, , AcceptAsyncBeginAcceptBeginConnect, o . ConnectConnectAsync

Llamar al SendAsync método proporciona la capacidad de enviar datos dentro de un subproceso de ejecución independiente.

En el caso de los sockets orientados a mensajes, no supere el tamaño máximo del mensaje del proveedor de servicios de Windows Sockets subyacente. Si los datos son demasiado largos para pasar de forma atómica a través del proveedor de servicios subyacente, no se transmite ningún dato y el SendAsync método produce un SocketException con el SocketAsyncEventArgs.SocketError establecido en el código de error nativo de Winsock WSAEMSGSIZE (10040).

Tenga en cuenta que la finalización correcta del SendAsync método no indica que los datos se entregaron correctamente.

Se aplica a

Consulte también