Socket.ReceiveAsync Método

Definición

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

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

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:

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

buffer
Memory<Byte>

Búfer de los datos recibidos.

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

buffer
Memory<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.

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