Socket.ReceiveMessageFromAsync Método
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í.
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. |
- 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);
public bool ReceiveMessageFromAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.ReceiveMessageFromAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ReceiveMessageFromAsync (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
RemoteEndPoint no puede ser null.
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 |
- 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<System::Byte> buffer, System::Net::EndPoint ^ remoteEndPoint);
public System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveMessageFromResult> ReceiveMessageFromAsync (ArraySegment<byte> buffer, System.Net.EndPoint remoteEndPoint);
member this.ReceiveMessageFromAsync : ArraySegment<byte> * System.Net.EndPoint -> System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveMessageFromResult>
Public Function ReceiveMessageFromAsync (buffer As ArraySegment(Of Byte), remoteEndPoint As EndPoint) As Task(Of SocketReceiveMessageFromResult)
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 |
- 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<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEndPoint);
public System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveMessageFromResult> ReceiveMessageFromAsync (ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEndPoint);
member this.ReceiveMessageFromAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveMessageFromResult>
Public Function ReceiveMessageFromAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags, remoteEndPoint As EndPoint) As Task(Of SocketReceiveMessageFromResult)
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 |
- 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);
member this.ReceiveMessageFromAsync : Memory<byte> * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveMessageFromResult>
Public Function ReceiveMessageFromAsync (buffer As Memory(Of Byte), remoteEndPoint As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of SocketReceiveMessageFromResult)
Parámetros
- 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 |
- 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);
member this.ReceiveMessageFromAsync : Memory<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveMessageFromResult>
Public Function ReceiveMessageFromAsync (buffer As Memory(Of Byte), socketFlags As SocketFlags, remoteEndPoint As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of SocketReceiveMessageFromResult)
Parámetros
- 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 |
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios: