Socket.ReceiveAsync 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
ReceiveAsync(ArraySegment<Byte>) |
Recibe datos de un socket conectado. |
ReceiveAsync(IList<ArraySegment<Byte>>) |
Recibe datos de un socket conectado. |
ReceiveAsync(SocketAsyncEventArgs) |
Comienza una solicitud asincrónica para recibir los datos de un objeto Socket conectado. |
ReceiveAsync(ArraySegment<Byte>, SocketFlags) |
Recibe datos de un socket conectado. |
ReceiveAsync(IList<ArraySegment<Byte>>, SocketFlags) |
Recibe datos de un socket conectado. |
ReceiveAsync(Memory<Byte>, CancellationToken) |
Recibe datos de un socket conectado. |
ReceiveAsync(Memory<Byte>, SocketFlags, CancellationToken) |
Recibe datos de un socket conectado. |
ReceiveAsync(ArraySegment<Byte>)
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
Recibe datos de un socket conectado.
public:
System::Threading::Tasks::Task<int> ^ ReceiveAsync(ArraySegment<System::Byte> buffer);
public System.Threading.Tasks.Task<int> ReceiveAsync (ArraySegment<byte> buffer);
member this.ReceiveAsync : ArraySegment<byte> -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffer As ArraySegment(Of Byte)) As Task(Of Integer)
Parámetros
- buffer
- ArraySegment<Byte>
Búfer de los datos recibidos.
Devoluciones
Tarea asincrónica que se completa con el número de bytes recibidos.
Excepciones
El Socket se ha cerrado.
Error al intentar acceder al socket.
Se aplica a
ReceiveAsync(IList<ArraySegment<Byte>>)
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
Recibe datos de un socket conectado.
public:
System::Threading::Tasks::Task<int> ^ ReceiveAsync(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public System.Threading.Tasks.Task<int> ReceiveAsync (System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.ReceiveAsync : System.Collections.Generic.IList<ArraySegment<byte>> -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffers As IList(Of ArraySegment(Of Byte))) As Task(Of Integer)
Parámetros
- buffers
- IList<ArraySegment<Byte>>
Una lista de búferes para los datos recibidos.
Devoluciones
Tarea asincrónica que se completa con el número de bytes recibidos.
Excepciones
El parámetro buffers
fue null.
El Socket se ha cerrado.
Error al intentar acceder al socket.
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 Receive(IList<ArraySegment<Byte>>).
Se aplica a
ReceiveAsync(SocketAsyncEventArgs)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
Comienza una solicitud asincrónica para recibir los datos de un objeto Socket conectado.
public:
bool ReceiveAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool ReceiveAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.ReceiveAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ReceiveAsync (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
Un argumento no era válido. 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.
Error al intentar acceder al socket.
Comentarios
El ReceiveAsync método se usa en sockets conectados o sockets sin conexión enlazados y se usa para leer los datos entrantes. La dirección local del socket debe conocerse.
En el caso de los sockets sin conexión enlazados, esta función restringe las direcciones de las que se aceptan los mensajes recibidos. La función solo devuelve mensajes de la dirección remota especificada en la conexión. Los mensajes de otras direcciones se descartan de forma silenciosa.
La SocketAsyncEventArgs.SocketFlags propiedad del e
parámetro proporciona al proveedor de servicios Sockets de ventana información adicional sobre la solicitud de lectura. Para obtener más información sobre cómo usar este parámetro, vea System.Net.Sockets.SocketFlags.
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 ReceiveAsync 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.
En el caso de los sockets de estilo de secuencia de bytes, los datos entrantes se colocan en el búfer hasta que se rellena el búfer, se cierra la conexión o se agotan los datos almacenados internamente en búfer.
En el caso de los sockets orientados a mensajes, un mensaje entrante se coloca en el búfer hasta el tamaño total del búfer asociado al e
parámetro . Si el mensaje es mayor que el búfer, el búfer se rellena con la primera parte del mensaje.
En el caso de los sockets orientados a la conexión, el ReceiveAsync método puede indicar la terminación correcta del circuito virtual de una de estas dos maneras que dependen de si el socket está orientado al flujo de bytes o al mensaje. En el caso de las secuencias de bytes, cero bytes que se han leído indica un cierre correcto y que nunca se leerán más bytes. En el caso de los sockets orientados a mensajes, donde a menudo se permite un mensaje de bytes cero, un SocketException con el SocketAsyncEventArgs.SocketError establecido en el código de error nativo de Winsock WSAEDISCON (10101) se usa para indicar un cierre correcto. En cualquier caso, un SocketException con establecido SocketAsyncEventArgs.SocketError en el código de error WSAECONNRESET nativo de Winsock (10054) indica que se ha producido un cierre anulativo.
Consulte también
Se aplica a
ReceiveAsync(ArraySegment<Byte>, SocketFlags)
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
Recibe datos de un socket conectado.
public:
System::Threading::Tasks::Task<int> ^ ReceiveAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public System.Threading.Tasks.Task<int> ReceiveAsync (ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.ReceiveAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags) As Task(Of Integer)
Parámetros
- buffer
- ArraySegment<Byte>
Búfer de los datos recibidos.
- socketFlags
- SocketFlags
Combinación bit a bit de valores SocketFlags que se usarán al recibir los datos.
Devoluciones
Tarea asincrónica que se completa con el número de bytes recibidos.
Excepciones
El Socket se ha cerrado.
Error al intentar acceder al socket.
Se aplica a
ReceiveAsync(IList<ArraySegment<Byte>>, SocketFlags)
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
Recibe datos de un socket conectado.
public:
System::Threading::Tasks::Task<int> ^ ReceiveAsync(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public System.Threading.Tasks.Task<int> ReceiveAsync (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.ReceiveAsync : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Task(Of Integer)
Parámetros
- buffers
- IList<ArraySegment<Byte>>
Una lista de búferes para los datos recibidos.
- socketFlags
- SocketFlags
Combinación bit a bit de valores SocketFlags que se usarán al recibir los datos.
Devoluciones
Tarea asincrónica que se completa con el número de bytes recibidos.
Excepciones
El parámetro buffers
fue null.
El Socket se ha cerrado.
Error al intentar acceder al socket.
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 Receive(IList<ArraySegment<Byte>>, SocketFlags).
Se aplica a
ReceiveAsync(Memory<Byte>, CancellationToken)
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
Recibe datos de un socket conectado.
public System.Threading.Tasks.ValueTask<int> ReceiveAsync (Memory<byte> buffer, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveAsync : Memory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function ReceiveAsync (buffer As Memory(Of Byte), Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)
Parámetros
- 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 recibidos.
Excepciones
El Socket se ha cerrado.
Error al intentar acceder al socket.
Se canceló el token de cancelación. Esta excepción se almacena en la tarea devuelta.
Se aplica a
ReceiveAsync(Memory<Byte>, SocketFlags, CancellationToken)
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
Recibe datos de un socket conectado.
public System.Threading.Tasks.ValueTask<int> ReceiveAsync (Memory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveAsync : Memory<byte> * System.Net.Sockets.SocketFlags * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function ReceiveAsync (buffer As Memory(Of Byte), socketFlags As SocketFlags, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)
Parámetros
- socketFlags
- SocketFlags
Combinación bit a bit de valores SocketFlags que se usarán al recibir 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 recibidos.
Excepciones
El Socket se ha cerrado.
Error al intentar acceder al socket.
Se canceló el token de cancelación. Esta excepción se almacena en la tarea devuelta.