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
- Исходный код:
- 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 работает на 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.
См. также раздел
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Применяется к
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
Параметры
- 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.