Поделиться через


Socket.ReceiveMessageFrom Метод

Определение

Перегрузки

ReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, IPPacketInformation)

Получает указанное число байтов данных в указанное расположение буфера данных с помощью заданного SocketFlags и сохраняет конечную точку и сведения о пакете.

ReceiveMessageFrom(Span<Byte>, SocketFlags, EndPoint, IPPacketInformation)

Получает указанное число байтов данных в указанное расположение буфера данных с помощью заданного socketFlags и сохраняет конечную точку и сведения о пакете.

ReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, IPPacketInformation)

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs

Получает указанное число байтов данных в указанное расположение буфера данных с помощью заданного SocketFlags и сохраняет конечную точку и сведения о пакете.

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

Параметры

buffer
Byte[]

Массив объекта типа Byte, который является местом хранения полученных данных.

offset
Int32

Позиция в параметре buffer для хранения полученных данных.

size
Int32

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

socketFlags
SocketFlags

Поразрядное сочетание значений SocketFlags.

remoteEP
EndPoint

Ссылка на EndPoint объект того же типа, что и конечная точка удаленного узла, обновляемая при успешном получении.

ipPacketInformation
IPPacketInformation

IPPacketInformation сохраняет адрес и сведения об интерфейсе.

Возвращаемое значение

Количество полученных байтов.

Исключения

buffer имеет значение null.

-или-

remoteEP имеет значение null.

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

-или-

Значение offset превышает длину buffer.

-или-

Значение параметраsize меньше 0.

-или-

Значение size превышает значение, полученное, если отнять от длины buffer значение параметра смещения.

socketFlags — недопустимое сочетание значений.

-или-

Свойство LocalEndPoint не задано.

-или-

Платформа .NET Framework выполняется на 64-разрядном процессоре AMD.

-или-

Произошла ошибка при попытке доступа к сокету.

Socket был закрыт.

Комментарии

Метод ReceiveMessageFrom считывает данные в buffer параметр , возвращает количество успешно прочитанных байтов и фиксирует конечную точку удаленного узла, с которого были отправлены данные, а также сведения о полученном пакете.

Метод ReceiveMessageFrom используется в основном для получения данных сообщений в сокете без подключения. Локальный адрес сокета должен быть известен. Этот метод можно использовать только с датаграммами и необработанными сокетами. Сокет должен быть инициализирован с типом сокета, равным Dgram или Raw перед вызовом этого метода. Это можно сделать при создании сокета с помощью Socket.

Для сокетов, ориентированных на сообщения, входящее сообщение помещается в buffer параметр до общего размера, указанного в параметре size . Параметр offset определяет, где размещаются buffer данные. Фактический объем данных, помещенных в , buffer возвращается методом ReceiveMessageFrom .

Метод ReceiveMessageFrom автоматически задает параметр true сокета PacketInformation при первом вызове для заданного Socketобъекта . Однако возвращенный IPPacketInformation объект будет действителен только для пакетов, поступающих на локальный компьютер после установки параметра сокета. Если сокет отправляет пакеты между привязкой к локальной конечной точке (явно методом Bind или неявно одним из Connectметодов , ConnectAsync, SendToили SendToAsync ) и первым вызовом ReceiveMessageFrom метода, вызовы ReceiveMessageFrom метода возвращают недопустимые IPPacketInformation объекты для этих пакетов.

Чтобы убедиться, что все IPPacketInformation объекты являются допустимыми, приложение должно задать PacketInformation для параметра сокета значение , true прежде чем он будет привязан к локальной конечной точке SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) с помощью метода .

Приложение может проверить параметр, ipPacketInformation если ему нужно узнать, была ли датаграмма отправлена с использованием одноадресного, многоадресного или широковещательного адреса.

Примечание

Объект AddressFamily объекта , используемого EndPoint в ReceiveFrom , должен соответствовать свойству AddressFamily , используемому EndPoint в SendTo.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в статье Трассировка сети в платформа .NET Framework.

См. также раздел

Применяется к

ReceiveMessageFrom(Span<Byte>, SocketFlags, EndPoint, IPPacketInformation)

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs

Получает указанное число байтов данных в указанное расположение буфера данных с помощью заданного socketFlags и сохраняет конечную точку и сведения о пакете.

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

Параметры

buffer
Span<Byte>

Объект Span<T> типа Byte , который является местом хранения полученных данных.

socketFlags
SocketFlags

Поразрядное сочетание значений SocketFlags.

remoteEP
EndPoint

Ссылка на EndPoint объект того же типа, что и конечная точка удаленного узла, обновляемая при успешном получении.

ipPacketInformation
IPPacketInformation

IPPacketInformation сохраняет адрес и сведения об интерфейсе.

Возвращаемое значение

Количество полученных байтов.

Исключения

Объект Socket закрыт.

RemoteEP EndPoint имеет значение null.

Объект AddressFamily объекта , используемого EndPoint в ReceiveMessageFrom(Span<Byte>, SocketFlags, EndPoint, IPPacketInformation) , должен соответствовать свойству AddressFamily , используемому EndPoint в SendTo.

Объект Socket не находится в режиме блокировки и не может принять этот синхронный вызов. Перед выполнением этой операции необходимо вызвать метод Bind.

Применяется к