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


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.

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

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