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


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 свойство для получения определенного кода ошибки.

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