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


Socket.EndReceiveMessageFrom Метод

Определение

Завершает отложенное асинхронное чтение с определенной конечной точки. Этот метод также показывает больше информации о пакете, чем метод EndReceiveFrom(IAsyncResult, EndPoint).

public:
 int EndReceiveMessageFrom(IAsyncResult ^ asyncResult, System::Net::Sockets::SocketFlags % socketFlags, System::Net::EndPoint ^ % endPoint, [Runtime::InteropServices::Out] System::Net::Sockets::IPPacketInformation % ipPacketInformation);
public int EndReceiveMessageFrom (IAsyncResult asyncResult, ref System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint endPoint, out System.Net.Sockets.IPPacketInformation ipPacketInformation);
member this.EndReceiveMessageFrom : IAsyncResult * SocketFlags * EndPoint * IPPacketInformation -> int
Public Function EndReceiveMessageFrom (asyncResult As IAsyncResult, ByRef socketFlags As SocketFlags, ByRef endPoint As EndPoint, ByRef ipPacketInformation As IPPacketInformation) As Integer

Параметры

asyncResult
IAsyncResult

Объект IAsyncResult, в котором хранятся сведения о состоянии и любые данные, определенные пользователем, для этой асинхронной операции.

socketFlags
SocketFlags

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

endPoint
EndPoint

Источник EndPoint.

ipPacketInformation
IPPacketInformation

Объект IPAddress и интерфейс полученного пакета.

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

Количество полученных байтов, если операция успешно выполнена. Возвращает значение 0, если операция завершилась неудачей.

Исключения

asyncResult равно null

-или-

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

Параметр asyncResult не был возвращен вызовом метода BeginReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object).

Метод EndReceiveMessageFrom(IAsyncResult, SocketFlags, EndPoint, IPPacketInformation) был ранее вызван для асинхронного чтения.

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

-или-

Только .NET 7 и более поздних версий Socket : объект был закрыт.

только платформа .NET Framework, .NET Core и .NET 5–6: Socket объект закрыт.

Комментарии

Важно!

Это API совместимости. Мы не рекомендуем использовать методы APM (Begin* и End*) для разработки новых приложений. Вместо этого используйте эквиваленты на Taskоснове .

EndReceiveFromзавершает операцию, запущенную .BeginReceiveFrom Необходимо передать объект , IAsyncResult созданный соответствующим BeginReceiveFrom вызовом. EndReceiveFrom блокирует вызывающий поток до завершения операции.

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

Примечание

Если вы получаете SocketException, используйте SocketException.ErrorCode свойство , чтобы получить конкретный код ошибки.

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