Socket.ReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, IPPacketInformation) Method

Definition

Получает указанное число байтов данных в указанное расположение буфера данных с помощью заданного SocketFlags и сохраняет конечную точку и сведения о пакете.Receives the specified number of bytes of data into the specified location of the data buffer, using the specified SocketFlags, and stores the endpoint and packet information.

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

Parameters

buffer
Byte[]

Массив объекта типа Byte, который является местом хранения полученных данных.An array of type Byte that is the storage location for received data.

offset
Int32

Позиция в параметре buffer для хранения полученных данных.The position in the buffer parameter to store the received data.

size
Int32

Количество байтов, которые необходимо получить.The number of bytes to receive.

socketFlags
SocketFlags

Побитовое сочетание значений SocketFlags.A bitwise combination of the SocketFlags values.

remoteEP
EndPoint

Переданный по ссылке объект EndPoint, представляющий удаленный сервер.An EndPoint, passed by reference, that represents the remote server.

ipPacketInformation
IPPacketInformation

IPPacketInformation сохраняет адрес и сведения об интерфейсе.An IPPacketInformation holding address and interface information.

Returns

Int32

Количество полученных байтов.The number of bytes received.

Exceptions

Параметр buffer равен null.buffer is null.

-или--or- Параметр remoteEP равен null.remoteEP is null.

Значение параметра offset меньше 0.offset is less than 0.

-или--or- Значение offset превышает длину buffer.offset is greater than the length of buffer.

-или--or- Значение параметра size меньше 0.size is less than 0.

-или--or- Значение size превышает значение, полученное, если отнять от длины buffer значение параметра смещения.size is greater than the length of the buffer minus the value of the offset parameter.

socketFlags — недопустимое сочетание значений.socketFlags is not a valid combination of values.

-или--or- Свойство LocalEndPoint не задано.The LocalEndPoint property was not set.

-или--or- Платформа .NET Framework выполняется на 64-разрядном процессоре AMD.The .NET Framework is running on an AMD 64-bit processor.

-или--or- Произошла ошибка при попытке доступа к сокету.An error occurred when attempting to access the socket.

Socket был закрыт.The Socket has been closed.

Remarks

Метод ReceiveMessageFrom считывает данные в параметре buffer, возвращает число успешно считанных байтов и фиксирует конечную точку удаленного узла, из которой были отправлены данные, а также сведения о полученных пакетах.The ReceiveMessageFrom method reads data into the buffer parameter, returns the number of bytes successfully read, and captures the remote host endpoint from which the data was sent, as well as information about the received packet.

Метод ReceiveMessageFrom используется в основном для получения данных сообщений в сокете без подключения.The ReceiveMessageFrom method is used primarily to receive message data on a connectionless socket. Локальный адрес сокета должен быть известен.The socket's local address must be known. Этот метод может использоваться только с датаграммами и необработанными сокетами.This method can only be used with datagram and raw sockets. Перед вызовом этого метода сокет должен быть инициализирован с типом сокета, равным Dgram или Raw.The socket must be initialized with the socket type set to Dgram or Raw before calling this method. Это можно сделать при создании сокета с помощью Socket.This can be done when the socket is constructed using Socket.

Для сокетов, ориентированных на сообщения, входящее сообщение помещается в параметр buffer вплоть до общего размера, указанного в параметре size.For message-oriented sockets, an incoming message is placed into the buffer parameter up to the total size specified in the size parameter. Параметр offset определяет, где в buffer размещаются данные.The offset parameter determines where in the buffer the data is placed. Фактический объем данных, помещаемых в buffer, возвращается методом ReceiveMessageFrom.The actual amount of data placed into the buffer is returned by the ReceiveMessageFrom method.

Метод ReceiveMessageFrom Method автоматически задает для параметра PacketInformation сокета значение true при первом вызове для данного Socket.The ReceiveMessageFrom method automatically method sets the PacketInformation socket option to true the first time it is called for a given Socket. Однако возвращенный объект IPPacketInformation будет действителен только для пакетов, поступающих на локальный компьютер после установки параметра сокета.However, the returned IPPacketInformation object will only be valid for packets which arrive at the local computer after the socket option has been set. Если сокет отправляет пакеты между моментом привязки к локальной конечной точке (явно методом Bind или неявно одним из методов Connect, ConnectAsync, SendToили SendToAsync) и первым вызовом метода ReceiveMessageFrom, вызовы метода ReceiveMessageFrom будут возвращать недопустимые объекты IPPacketInformation для этих пакетов.If a socket is sent packets between when it is bound to a local endpoint (explicitly by the Bind method or implicitly by one of the Connect, ConnectAsync, SendTo, or SendToAsync methods) and its first call to the ReceiveMessageFrom method, calls to ReceiveMessageFrom method will return invalid IPPacketInformation objects for these packets.

Чтобы обеспечить допустимость всех IPPacketInformation объектов, приложение должно установить параметр PacketInformation сокета для true перед привязкой к локальной конечной точке с помощью метода SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean).To ensure that all IPPacketInformation objects are valid, an application should set the PacketInformation socket option to true before it is bound to a local endpoint using the SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) method.

Приложение может проверить параметр ipPacketInformation, если необходимо узнать, была ли датаграмма отправлена с помощью одноадресного, многоадресного или широковещательного адреса.An application can examine the ipPacketInformation parameter if it needs to know if the datagram was sent using a unicast, multicast, or broadcast address.

Note

AddressFamily EndPoint, используемых в ReceiveFrom, должны соответствовать AddressFamily EndPoint, используемого в SendTo.The AddressFamily of the EndPoint used in ReceiveFrom needs to match the AddressFamily of the EndPoint used in SendTo.

Note

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети.This member outputs trace information when you enable network tracing in your application. Дополнительные сведения см. в разделе Сетевая трассировка в .NET Framework.For more information, see Network Tracing in the .NET Framework.

Applies to

See also