Socket.ReceiveMessageFromAsync Método

Definición

Sobrecargas

ReceiveMessageFromAsync(SocketAsyncEventArgs)

Comienza a recibir de forma asincrónica el número especificado de bytes de datos en la ubicación indicada del búfer de datos, mediante la propiedad SocketFlags especificada, y almacena la información sobre el extremo y el paquete.

ReceiveMessageFromAsync(ArraySegment<Byte>, EndPoint)

Recibe datos y devuelve información adicional sobre el remitente del mensaje.

ReceiveMessageFromAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

Recibe datos y devuelve información adicional sobre el remitente del mensaje.

ReceiveMessageFromAsync(Memory<Byte>, EndPoint, CancellationToken)

Recibe datos y devuelve información adicional sobre el remitente del mensaje.

ReceiveMessageFromAsync(Memory<Byte>, SocketFlags, EndPoint, CancellationToken)

Recibe datos y devuelve información adicional sobre el remitente del mensaje.

ReceiveMessageFromAsync(SocketAsyncEventArgs)

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

Comienza a recibir de forma asincrónica el número especificado de bytes de datos en la ubicación indicada del búfer de datos, mediante la propiedad SocketFlags especificada, y almacena la información sobre el extremo y el paquete.

public bool ReceiveMessageFromAsync (System.Net.Sockets.SocketAsyncEventArgs e);

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

El Socket se ha cerrado.

Error al intentar acceder al socket.

Comentarios

El ReceiveMessageFromAsync método se usa principalmente para recibir datos de mensajes en un socket sin conexión. La dirección local del socket debe conocerse. Este método solo se puede usar con datagramas y sockets sin formato. El socket debe inicializarse con el tipo de socket establecido Dgram en o Raw antes de llamar a este método. Esto se puede hacer cuando el socket se construye mediante Socket.

El autor de la llamada debe establecer la SocketAsyncEventArgs.RemoteEndPoint propiedad en un EndPoint valor del mismo tipo que el punto de conexión del host remoto. La propiedad se actualizará si la recepción se realiza correctamente en el punto de conexión remoto real.

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 ReceiveMessageFromAsync 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 orientados a mensajes, un mensaje entrante se coloca en el búfer hasta el tamaño total del búfer. Las SocketAsyncEventArgs.Count propiedades y SocketAsyncEventArgs.Offset determinan dónde se colocan los datos en el búfer y la cantidad de datos.

El ReceiveMessageFromAsync método establece automáticamente la opción de PacketInformation socket en true la primera vez que se llama para un determinado Socket. Sin embargo, el IPPacketInformation objeto solo será válido para los paquetes que llegan al equipo local después de establecer la opción de socket. Si un socket se envía paquetes entre cuando el socket está enlazado a un punto de conexión local (explícitamente por el Bind método o implícitamente por uno de los Connectmétodos , ConnectAsync, SendToo SendToAsync ) y la primera llamada al ReceiveMessageFromAsync método , las llamadas al método darán lugar a ReceiveMessageFromAsync objetos no válidos IPPacketInformation para estos paquetes.

Para asegurarse de que todos los IPPacketInformation objetos son válidos, una aplicación debe establecer la PacketInformation opción de socket entrue antes de enlazarse a un punto de conexión local mediante el SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) método .

Una aplicación puede examinar los objetos resultantes IPPacketInformation si necesita saber si el datagrama se envió mediante una dirección de unidifusión, multidifusión o difusión.

Consulte también

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1

ReceiveMessageFromAsync(ArraySegment<Byte>, EndPoint)

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

Recibe datos y devuelve información adicional sobre el remitente del mensaje.

public System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveMessageFromResult> ReceiveMessageFromAsync (ArraySegment<byte> buffer, System.Net.EndPoint remoteEndPoint);

Parámetros

buffer
ArraySegment<Byte>

Búfer de los datos recibidos.

remoteEndPoint
EndPoint

Un punto de conexión del mismo tipo que el punto de conexión del host remoto.

Devoluciones

Tarea asincrónica que se completa con un SocketReceiveMessageFromResult objeto que contiene el número de bytes recibidos e información adicional sobre el host de envío.

Excepciones

El objeto Socket se ha cerrado.

remoteEndPoint es null.

Debe llamar al método Bind antes de realizar esta operación.

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET 7, 8, 9

ReceiveMessageFromAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

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

Recibe datos y devuelve información adicional sobre el remitente del mensaje.

public System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveMessageFromResult> ReceiveMessageFromAsync (ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEndPoint);

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.

remoteEndPoint
EndPoint

Un punto de conexión del mismo tipo que el punto de conexión del host remoto.

Devoluciones

Tarea asincrónica que se completa con un SocketReceiveMessageFromResult objeto que contiene el número de bytes recibidos e información adicional sobre el host de envío.

Excepciones

El objeto Socket se ha cerrado.

remoteEndPoint es null.

Debe llamar al método Bind antes de realizar esta operación.

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET 6, 7, 8, 9

ReceiveMessageFromAsync(Memory<Byte>, EndPoint, CancellationToken)

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

Recibe datos y devuelve información adicional sobre el remitente del mensaje.

public System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveMessageFromResult> ReceiveMessageFromAsync (Memory<byte> buffer, System.Net.EndPoint remoteEndPoint, System.Threading.CancellationToken cancellationToken = default);

Parámetros

buffer
Memory<Byte>

Búfer de los datos recibidos.

remoteEndPoint
EndPoint

Un punto de conexión del mismo tipo que el punto de conexión del host remoto.

cancellationToken
CancellationToken

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

Devoluciones

Tarea asincrónica que se completa con un SocketReceiveMessageFromResult objeto que contiene el número de bytes recibidos e información adicional sobre el host de envío.

Excepciones

El objeto Socket se ha cerrado.

remoteEndPoint es null.

Debe llamar al método Bind antes de realizar esta operación.

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

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET 7, 8, 9

ReceiveMessageFromAsync(Memory<Byte>, SocketFlags, EndPoint, CancellationToken)

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

Recibe datos y devuelve información adicional sobre el remitente del mensaje.

public System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveMessageFromResult> ReceiveMessageFromAsync (Memory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEndPoint, System.Threading.CancellationToken cancellationToken = default);

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.

remoteEndPoint
EndPoint

Un punto de conexión del mismo tipo que el punto de conexión del host remoto.

cancellationToken
CancellationToken

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

Devoluciones

Tarea asincrónica que se completa con un SocketReceiveMessageFromResult objeto que contiene el número de bytes recibidos e información adicional sobre el host de envío.

Excepciones

El objeto Socket se ha cerrado.

remoteEndPoint es null.

Debe llamar al método Bind antes de realizar esta operación.

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

Se aplica a

.NET 9 y otras versiones
Producto Versiones
.NET 6, 7, 8, 9