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, в котором хранятся сведения о состоянии и любые данные, определенные пользователем, для этой асинхронной операции.
Возвращаемое значение
Количество полученных байтов, если операция успешно выполнена. Возвращает значение 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.