Socket.SendAsync Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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:
SocketAsyncEventArgs.Buffer o SocketAsyncEventArgs.BufferList
SocketAsyncEventArgs.Count si SocketAsyncEventArgs.Buffer se establece
SocketAsyncEventArgs.Offset si SocketAsyncEventArgs.Buffer se establece
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.