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
Исходный код:
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 работает на 64-разрядном процессоре AMD.

–или–

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

Он Socket был закрыт.

Комментарии

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

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

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

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

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

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

Note

Используемое значение должно соответствовать AddressFamily используемому EndPointReceiveFrom.AddressFamilyEndPointSendTo

Note

Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе Network Трассировка в .NET Framework.

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

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

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

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
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>

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

socketFlags
SocketFlags

Побитовое сочетание значений SocketFlags .

remoteEP
EndPoint

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

ipPacketInformation
IPPacketInformation

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

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

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

Исключения

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

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

Используемое AddressFamilyEndPoint значение ReceiveMessageFrom(Span<Byte>, SocketFlags, EndPoint, IPPacketInformation) должно соответствовать AddressFamily используемому EndPoint в SendTo.

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

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