Compartir por


Socket.ReceiveAsync Método

Definición

Sobrecargas

Nombre Description
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 datos de un objeto conectado Socket .

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
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 que representa la operación de recepción asincrónica. El valor de su Result propiedad contiene el número total de bytes leídos entre buffer cero (0) y el número de bytes solicitados. El valor de resultado es cero (0) solo si se solicitó cero bytes o si no hay más bytes disponibles porque el socket del mismo nivel realizó un apagado correcto. Si se solicitan cero bytes, es posible que las operaciones de recepción se completen inmediatamente o no se completen hasta que haya al menos un byte disponible (pero sin consumir ningún dato).

Excepciones

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
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 que representa la operación de recepción asincrónica. El valor de su Result propiedad contiene el número total de bytes leídos en los búferes entre cero (0) y el número de bytes solicitados. El valor de resultado es cero (0) solo si se solicitó cero bytes o si no hay más bytes disponibles porque el socket del mismo nivel realizó un apagado correcto. Si se solicitan cero bytes, es posible que las operaciones de recepción se completen inmediatamente o no se completen hasta que haya al menos un byte disponible (pero sin consumir ningún dato).

Excepciones

El buffers parámetro era null.

Error al intentar acceder al socket.

Comentarios

Este método almacena en la tarea que devuelve todas las excepciones de no uso que puede producir el homólogo sincrónico del método. Si se almacena una excepción en la tarea devuelta, se producirá esa excepción cuando se espere la tarea. Las excepciones de uso, como ArgumentException, todavía se producen sincrónicamente. Para las excepciones almacenadas, consulte las excepciones producidas por Receive(IList<ArraySegment<Byte>>).

Se aplica a

ReceiveAsync(SocketAsyncEventArgs)

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

Comienza una solicitud asincrónica para recibir datos de un objeto conectado Socket .

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 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

Un argumento no era válido. 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 .

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 desde 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 silenciosamente.

La SocketAsyncEventArgs.SocketFlags propiedad del e parámetro proporciona al proveedor de servicios De 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 a secuencias de bytes o mensajes. En el caso de las secuencias de bytes, cero bytes que se han leído indica el 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 nativo de Winsock WSAECONNRESET (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
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 que representa la operación de recepción asincrónica. El valor de su Result propiedad contiene el número total de bytes leídos entre buffer cero (0) y el número de bytes solicitados. El valor de resultado es cero (0) solo si se solicitó cero bytes o si no hay más bytes disponibles porque el socket del mismo nivel realizó un apagado correcto. Si se solicitan cero bytes, es posible que las operaciones de recepción se completen inmediatamente o no se completen hasta que haya al menos un byte disponible (pero sin consumir ningún dato).

Excepciones

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
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 que representa la operación de recepción asincrónica. El valor de su Result propiedad contiene el número total de bytes leídos entre buffer cero (0) y el número de bytes solicitados. El valor de resultado es cero (0) solo si se solicitó cero bytes o si no hay más bytes disponibles porque el socket del mismo nivel realizó un apagado correcto. Si se solicitan cero bytes, es posible que las operaciones de recepción se completen inmediatamente o no se completen hasta que haya al menos un byte disponible (pero sin consumir ningún dato).

Excepciones

El buffers parámetro era null.

Error al intentar acceder al socket.

Comentarios

Este método almacena en la tarea que devuelve todas las excepciones de no uso que puede producir el homólogo sincrónico del método. Si se almacena una excepción en la tarea devuelta, se producirá esa excepción cuando se espere la tarea. Las excepciones de uso, como ArgumentException, todavía se producen sincrónicamente. Para las excepciones almacenadas, consulte 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
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

ValueTask<TResult> que representa la operación de recepción asincrónica. El valor de su Result propiedad contiene el número total de bytes leídos entre buffer cero (0) y el número de bytes solicitados. El valor de resultado es cero (0) solo si se solicitó cero bytes o si no hay más bytes disponibles porque el socket del mismo nivel realizó un apagado correcto. Si se solicitan cero bytes, es posible que las operaciones de recepción se completen inmediatamente o no se completen hasta que haya al menos un byte disponible (pero sin consumir ningún dato).

Excepciones

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
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

ValueTask<TResult> que representa la operación de recepción asincrónica. El valor de su Result propiedad contiene el número total de bytes leídos entre buffer cero (0) y el número de bytes solicitados. El valor de resultado es cero (0) solo si se solicitó cero bytes o si no hay más bytes disponibles porque el socket del mismo nivel realizó un apagado correcto. Si se solicitan cero bytes, es posible que las operaciones de recepción se completen inmediatamente o no se completen hasta que haya al menos un byte disponible (pero sin consumir ningún dato).

Excepciones

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