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


Socket.EndReceiveFrom(IAsyncResult, EndPoint) Метод

Определение

Завершает отложенное асинхронное чтение с определенной конечной точки.

public:
 int EndReceiveFrom(IAsyncResult ^ asyncResult, System::Net::EndPoint ^ % endPoint);
public int EndReceiveFrom (IAsyncResult asyncResult, ref System.Net.EndPoint endPoint);
member this.EndReceiveFrom : IAsyncResult * EndPoint -> int
Public Function EndReceiveFrom (asyncResult As IAsyncResult, ByRef endPoint As EndPoint) As Integer

Параметры

asyncResult
IAsyncResult

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

endPoint
EndPoint

Источник EndPoint.

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

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

Исключения

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

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

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

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

-или-

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

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

Комментарии

Важно!

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

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

Метод EndReceiveFrom блокируется до тех пор, пока данные не станут доступны. Если вы используете протокол без подключения, EndReceiveFrom считывает первую датаграмму в очереди, доступную во входящий сетевой буфер. Если вы используете протокол, ориентированный на подключение, метод будет считывать столько данных, EndReceiveFrom сколько доступно, вплоть до количества байтов, указанного в size параметре BeginReceiveFrom метода . Если удаленный узел завершает Socket подключение к методу Shutdown и все доступные данные получены, EndReceiveFrom метод выполняется немедленно и возвращает ноль байтов. Чтобы получить полученные данные, вызовите AsyncState метод IAsyncResult объекта и извлеките буфер, содержащийся в результирующем объекте состояния. Чтобы определить исходный узел, извлеките EndPoint и приведите его к IPEndPoint. Используйте метод для IPEndPoint.Address получения IP-адреса и IPEndPoint.Port метод для получения номера порта.

Примечание

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

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в статье Трассировка сети в платформа .NET Framework.

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