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


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.

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