Socket.ReceiveMessageFrom Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
ReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, IPPacketInformation) |
Получает указанное число байтов данных в указанное расположение буфера данных с помощью заданного SocketFlags и сохраняет конечную точку и сведения о пакете. |
ReceiveMessageFrom(Span<Byte>, SocketFlags, EndPoint, IPPacketInformation) |
Получает указанное число байтов данных в указанное расположение буфера данных с помощью заданного |
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
Параметры
- offset
- Int32
Позиция в параметре buffer
для хранения полученных данных.
- size
- Int32
Количество байтов, которые необходимо получить.
- socketFlags
- SocketFlags
Поразрядное сочетание значений SocketFlags.
- remoteEP
- EndPoint
Ссылка на EndPoint объект того же типа, что и конечная точка удаленного узла, обновляемая при успешном получении.
- ipPacketInformation
- IPPacketInformation
IPPacketInformation сохраняет адрес и сведения об интерфейсе.
Возвращаемое значение
Количество полученных байтов.
Исключения
Значение параметра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.
См. также раздел
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Применяется к
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
Параметры
- 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.