Socket.SendAsync Método

Definición

Sobrecargas

SendAsync(ReadOnlyMemory<Byte>, CancellationToken)

Envía datos en un socket conectado.

SendAsync(IList<ArraySegment<Byte>>, SocketFlags)

Envía datos en un socket conectado.

SendAsync(ArraySegment<Byte>, SocketFlags)

Envía datos en un socket conectado.

SendAsync(ReadOnlyMemory<Byte>, SocketFlags, CancellationToken)

Envía datos en un socket conectado.

SendAsync(IList<ArraySegment<Byte>>)

Envía datos en un socket conectado.

SendAsync(ArraySegment<Byte>)

Envía datos en un socket conectado.

SendAsync(SocketAsyncEventArgs)

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

SendAsync(ReadOnlyMemory<Byte>, CancellationToken)

Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs

Envía datos en un socket conectado.

public System.Threading.Tasks.ValueTask<int> SendAsync (ReadOnlyMemory<byte> buffer, System.Threading.CancellationToken cancellationToken = default);
member this.SendAsync : ReadOnlyMemory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendAsync (buffer As ReadOnlyMemory(Of Byte), Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

Parámetros

buffer
ReadOnlyMemory<Byte>

Búfer de los datos que se van a enviar.

cancellationToken
CancellationToken

Token de cancelación que se puede usar para cancelar la operación asincrónica.

Devoluciones

Tarea asincrónica que se completa con el número de bytes enviados.

Excepciones

Se canceló el token de cancelación. Esta excepción se almacena en la tarea devuelta.

Se aplica a

SendAsync(IList<ArraySegment<Byte>>, SocketFlags)

Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs

Envía datos en un socket conectado.

public:
 System::Threading::Tasks::Task<int> ^ SendAsync(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public System.Threading.Tasks.Task<int> SendAsync (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.SendAsync : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> System.Threading.Tasks.Task<int>
Public Function SendAsync (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Task(Of Integer)

Parámetros

buffers
IList<ArraySegment<Byte>>

Lista de búferes para los datos que se van a enviar.

socketFlags
SocketFlags

Combinación bit a bit de valores SocketFlags que se usarán al enviar los datos.

Devoluciones

Tarea asincrónica que se completa con el número de bytes enviados.

Excepciones

buffers es null.

Error al intentar acceder al socket.

El Socket se ha cerrado.

Comentarios

Este método almacena en la tarea que devuelve todas las excepciones que no son de uso que puede producir el homólogo sincrónico del método. Si se almacena una excepción en la tarea devuelta, esa excepción se producirá cuando se espere a la tarea. Las excepciones de uso, como ArgumentException, se siguen produciendo de forma sincrónica. Para ver las excepciones almacenadas, vea las excepciones producidas por Send(IList<ArraySegment<Byte>>, SocketFlags).

Se aplica a

SendAsync(ArraySegment<Byte>, SocketFlags)

Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs

Envía datos en un socket conectado.

public:
 System::Threading::Tasks::Task<int> ^ SendAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public System.Threading.Tasks.Task<int> SendAsync (ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.SendAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags -> System.Threading.Tasks.Task<int>
Public Function SendAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags) As Task(Of Integer)

Parámetros

buffer
ArraySegment<Byte>

Búfer de los datos que se van a enviar.

socketFlags
SocketFlags

Combinación bit a bit de valores SocketFlags que se usarán al enviar los datos.

Devoluciones

Tarea asincrónica que se completa con el número de bytes enviados.

Excepciones

Error al intentar acceder al socket.

El Socket se ha cerrado.

Se aplica a

SendAsync(ReadOnlyMemory<Byte>, SocketFlags, CancellationToken)

Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs

Envía datos en un socket conectado.

public System.Threading.Tasks.ValueTask<int> SendAsync (ReadOnlyMemory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Threading.CancellationToken cancellationToken = default);
member this.SendAsync : ReadOnlyMemory<byte> * System.Net.Sockets.SocketFlags * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendAsync (buffer As ReadOnlyMemory(Of Byte), socketFlags As SocketFlags, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

Parámetros

buffer
ReadOnlyMemory<Byte>

Búfer de los datos que se van a enviar.

socketFlags
SocketFlags

Combinación bit a bit de valores SocketFlags que se usarán al enviar los datos.

cancellationToken
CancellationToken

Token de cancelación que se puede usar para cancelar la operación asincrónica.

Devoluciones

Tarea asincrónica que se completa con el número de bytes enviados.

Excepciones

Error al intentar acceder al socket.

El Socket se ha cerrado.

Se canceló el token de cancelación. Esta excepción se almacena en la tarea devuelta.

Se aplica a

SendAsync(IList<ArraySegment<Byte>>)

Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs

Envía datos en un socket conectado.

public:
 System::Threading::Tasks::Task<int> ^ SendAsync(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public System.Threading.Tasks.Task<int> SendAsync (System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.SendAsync : System.Collections.Generic.IList<ArraySegment<byte>> -> System.Threading.Tasks.Task<int>
Public Function SendAsync (buffers As IList(Of ArraySegment(Of Byte))) As Task(Of Integer)

Parámetros

buffers
IList<ArraySegment<Byte>>

Lista de búferes para los datos que se van a enviar.

Devoluciones

Tarea asincrónica que se completa con el número de bytes enviados.

Excepciones

buffers es null.

Error al intentar acceder al socket.

El Socket se ha cerrado.

Comentarios

Este método almacena en la tarea que devuelve todas las excepciones que no son de uso que puede producir el homólogo sincrónico del método. Si se almacena una excepción en la tarea devuelta, esa excepción se producirá cuando se espere a la tarea. Las excepciones de uso, como ArgumentException, se siguen produciendo de forma sincrónica. Para ver las excepciones almacenadas, vea las excepciones producidas por Send(IList<ArraySegment<Byte>>).

Se aplica a

SendAsync(ArraySegment<Byte>)

Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs

Envía datos en un socket conectado.

public:
 System::Threading::Tasks::Task<int> ^ SendAsync(ArraySegment<System::Byte> buffer);
public System.Threading.Tasks.Task<int> SendAsync (ArraySegment<byte> buffer);
member this.SendAsync : ArraySegment<byte> -> System.Threading.Tasks.Task<int>
Public Function SendAsync (buffer As ArraySegment(Of Byte)) As Task(Of Integer)

Parámetros

buffer
ArraySegment<Byte>

Búfer de los datos que se van a enviar.

Devoluciones

Tarea asincrónica que se completa con el número de bytes enviados.

Excepciones

Error al intentar acceder al socket.

El Socket se ha cerrado.

Se aplica a

SendAsync(SocketAsyncEventArgs)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

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

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 usa para esta operación de socket asincrónica.

Devoluciones

Devuelve true si la operación de E/S está pendiente. Al completar la operación se provoca el evento Completed del parámetro e.

Devuelve false si la operación de E/S se ha completado de forma sincrónica. En ese caso, el evento Completed del parámetro e no se provoca y el objeto e que se pasa como parámetro puede examinarse inmediatamente después de que se devuelva la llamada al método para recuperar el resultado de la operación.

Excepciones

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

Ya hay una operación de socket en curso que utiliza el objeto SocketAsyncEventArgs especificado en el parámetro e.

El Socket se ha cerrado.

El Socket no está conectado todavía o no se obtuvo a través de un método Accept(), 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, BeginAcceptBeginConnect, , 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, AcceptAsync, BeginAcceptBeginConnect, Connecto ConnectAsync.

Llamar al SendAsync método le permite 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 windows sockets subyacente. Si los datos son demasiado largos para pasarse de forma atómica a través del proveedor de servicios subyacente, no se transmiten datos 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.

Consulte también

Se aplica a