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.
См. также раздел
- BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- IAsyncResult
- AsyncState
- Shutdown(SocketShutdown)
Применяется к
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.
См. также раздел
- BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- IAsyncResult
- AsyncState
- Shutdown(SocketShutdown)