Socket.ReceiveMessageFrom Método

Definición

Recibe el número especificado de bytes de datos en la ubicación especificada del búfer de datos, utilizando el especificado SocketFlagsy almacena la información del punto de conexión y del paquete.

public:
 int ReceiveMessageFrom(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags % socketFlags, System::Net::EndPoint ^ % remoteEP, [Runtime::InteropServices::Out] System::Net::Sockets::IPPacketInformation % ipPacketInformation);
public int ReceiveMessageFrom(byte[] buffer, int offset, int size, ref System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, out System.Net.Sockets.IPPacketInformation ipPacketInformation);
member this.ReceiveMessageFrom : byte[] * int * int * SocketFlags * EndPoint * IPPacketInformation -> int
Public Function ReceiveMessageFrom (buffer As Byte(), offset As Integer, size As Integer, ByRef socketFlags As SocketFlags, ByRef remoteEP As EndPoint, ByRef ipPacketInformation As IPPacketInformation) As Integer

Parámetros

buffer
Byte[]

Matriz de tipo Byte que es la ubicación de almacenamiento de los datos recibidos.

offset
Int32

Posición en el buffer parámetro para almacenar los datos recibidos.

size
Int32

Número de bytes que se van a recibir.

socketFlags
SocketFlags

Combinación bit a bit de los SocketFlags valores.

remoteEP
EndPoint

Referencia a un EndPoint de tipo del mismo tipo que el punto de conexión del host remoto que se va a actualizar al recibir correctamente.

ipPacketInformation
IPPacketInformation

Información IPPacketInformation de interfaz y dirección de retención.

Devoluciones

Número de bytes recibidos.

Excepciones

buffer es null.

O bien

remoteEP es null.

offset es menor que 0.

O bien

offset es mayor que la longitud de buffer.

O bien

size es menor que 0.

O bien

size es mayor que la longitud del buffer menos el valor del parámetro offset.

socketFlags no es una combinación válida de valores.

O bien

No se estableció la LocalEndPoint propiedad .

O bien

.NET Framework se ejecuta en un procesador AMD de 64 bits.

O bien

Error al intentar acceder al socket.

Comentarios

El ReceiveMessageFrom método lee los datos en el buffer parámetro , devuelve el número de bytes leídos correctamente y captura el punto de conexión del host remoto desde el que se enviaron los datos, así como información sobre el paquete recibido.

El ReceiveMessageFrom 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.

En el caso de los sockets orientados a mensajes, un mensaje entrante se coloca en el buffer parámetro hasta el tamaño total especificado en el size parámetro . El offset parámetro determina dónde se colocan los buffer datos. El método devuelve la cantidad real de datos colocados en .bufferReceiveMessageFrom

El ReceiveMessageFrom método establece automáticamente la PacketInformation opción de socket a true la primera vez que se llama para un determinado Socket. Sin embargo, el objeto devuelto IPPacketInformation 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 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 su primera llamada al método , las llamadas al ReceiveMessageFromReceiveMessageFrom método devolverán 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 en true antes de enlazarla a un punto de conexión local mediante el SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) método .

Una aplicación puede examinar el ipPacketInformation parámetro si necesita saber si el datagrama se envió mediante una dirección de unidifusión, multidifusión o difusión.

Note

del AddressFamilyEndPoint objeto utilizado en ReceiveFrom debe coincidir con el AddressFamily de utilizado EndPoint en SendTo.

Note

Este miembro genera información de seguimiento al habilitar el seguimiento de red en la aplicación. Para obtener más información, vea Network Tracing in .NET Framework.

Se aplica a

Consulte también