Прочитать на английском

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


Socket.EndReceiveMessageFrom Метод

Определение

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

public int EndReceiveMessageFrom(IAsyncResult asyncResult, ref System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint endPoint, out System.Net.Sockets.IPPacketInformation ipPacketInformation);

Параметры

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

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

Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1