Socket.EndReceive Метод

Определение

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

Перегрузки

EndReceive(IAsyncResult)

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

EndReceive(IAsyncResult, SocketError)

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

EndReceive(IAsyncResult)

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs

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

public:
 int EndReceive(IAsyncResult ^ asyncResult);
public int EndReceive (IAsyncResult asyncResult);
member this.EndReceive : IAsyncResult -> int
Public Function EndReceive (asyncResult As IAsyncResult) As Integer

Параметры

asyncResult
IAsyncResult

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

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

Количество полученных байтов.

Исключения

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

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

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

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

-или-

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

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

Комментарии

Важно!

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

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

Метод EndReceive блокируется до тех пор, пока данные не станут доступны. Если вы используете протокол без подключения, EndReceive считывает первую датаграмму в очереди, доступную во входящий сетевой буфер. Если вы используете протокол, ориентированный на подключение, метод будет считывать столько данных, EndReceive сколько доступно, вплоть до количества байтов, указанного в size параметре BeginReceive метода . Если удаленный узел завершает Socket подключение к методу Shutdown и все доступные данные получены, EndReceive метод выполняется немедленно и возвращает ноль байтов.

Примечание

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

Примечание

Все операции ввода-вывода, инициированные данным потоком, отменяются при выходе из этого потока. Ожидающая асинхронная операция может завершиться ошибкой, если поток завершится до завершения операции.

Примечание

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

См. также раздел

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

EndReceive(IAsyncResult, SocketError)

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs

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

public:
 int EndReceive(IAsyncResult ^ asyncResult, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int EndReceive (IAsyncResult asyncResult, out System.Net.Sockets.SocketError errorCode);
member this.EndReceive : IAsyncResult * SocketError -> int
Public Function EndReceive (asyncResult As IAsyncResult, ByRef errorCode As SocketError) As Integer

Параметры

asyncResult
IAsyncResult

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

errorCode
SocketError

Объект SocketError, содержащий ошибку сокета.

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

Количество полученных байтов.

Исключения

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

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

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

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

-или-

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

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

Комментарии

Важно!

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

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

Метод EndReceive блокируется до тех пор, пока данные не станут доступны. Если вы используете протокол без подключения, EndReceive считывает первую датаграмму в очереди, доступную во входящий сетевой буфер. Если вы используете протокол, ориентированный на подключение, метод будет считывать столько данных, EndReceive сколько доступно, вплоть до количества байтов, указанного в size параметре BeginReceive метода . Если удаленный узел завершает Socket подключение к методу Shutdown и все доступные данные получены, EndReceive метод выполняется немедленно и возвращает ноль байтов.

Примечание

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

Примечание

Все операции ввода-вывода, инициированные данным потоком, отменяются при выходе из этого потока. Ожидающая асинхронная операция может завершиться ошибкой, если поток завершится до завершения операции.

Примечание

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

См. также раздел

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