Socket.EndSend Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Завершает отложенную операцию асинхронной передачи.
Перегрузки
EndSend(IAsyncResult) |
Завершает отложенную операцию асинхронной передачи. |
EndSend(IAsyncResult, SocketError) |
Завершает отложенную операцию асинхронной передачи. |
EndSend(IAsyncResult)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
Завершает отложенную операцию асинхронной передачи.
public:
int EndSend(IAsyncResult ^ asyncResult);
public int EndSend (IAsyncResult asyncResult);
member this.EndSend : IAsyncResult -> int
Public Function EndSend (asyncResult As IAsyncResult) As Integer
Параметры
- asyncResult
- IAsyncResult
Объект IAsyncResult, хранящий сведения о состоянии этой асинхронной операции.
Возвращаемое значение
Если операция завершилась успешно — значение количества байтов, переданных в объект Socket; в противном случае — ошибка, указывающая на недопустимость объекта Socket.
Исключения
asyncResult
имеет значение null
.
Параметр asyncResult
не был возвращен вызовом метода BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object).
Метод EndSend(IAsyncResult) был ранее вызван для асинхронной передачи.
Произошла ошибка при попытке доступа к сокету.
-или-
Только .NET 7 и более поздних версий Socket : объект был закрыт.
только платформа .NET Framework, .NET Core и .NET 5–6: Socket объект закрыт.
Комментарии
Важно!
Это API совместимости. Мы не рекомендуем использовать методы APM (Begin*
и End*
) для разработки новых приложений. Вместо этого используйте эквиваленты на Task
основе .
EndSendзавершает операцию, запущенную .BeginSend Необходимо передать объект , IAsyncResult созданный соответствующим BeginSend вызовом.
Если вы используете протокол без подключения, будет блокироваться до EndSend отправки датаграммы. Если вы используете протокол, ориентированный на подключение, будет блокироваться до EndSend отправки части буфера. Если возвращаемое значение из EndSend указывает, что буфер не был полностью отправлен, вызовите BeginSend метод еще раз, изменив буфер для хранения неотправленных данных.
Нет никакой гарантии, что отправляемые данные появятся в сети немедленно. Чтобы повысить эффективность сети, базовая система может отложить передачу до сбора значительного объема исходящих данных. Успешное выполнение BeginSend метода означает, что в базовой системе есть место для буферизации данных для отправки по сети.
Примечание
Если вы получаете SocketException, используйте SocketException.ErrorCode свойство , чтобы получить конкретный код ошибки.
Примечание
Все операции ввода-вывода, инициированные данным потоком, отменяются при выходе из этого потока. Ожидающая асинхронная операция может завершиться ошибкой, если поток завершится до завершения операции.
Примечание
Успешное завершение отправки не означает, что данные были успешно доставлены. Если в транспортной системе нет буферного пространства для хранения передаваемых данных, отправка будет блокироваться, если сокет не был помещен в неблокировочный режим.
Примечание
Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в статье Трассировка сети в платформа .NET Framework.
См. также раздел
- BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- AsyncState
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- NoDelay
Применяется к
EndSend(IAsyncResult, SocketError)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
Завершает отложенную операцию асинхронной передачи.
public:
int EndSend(IAsyncResult ^ asyncResult, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int EndSend (IAsyncResult asyncResult, out System.Net.Sockets.SocketError errorCode);
member this.EndSend : IAsyncResult * SocketError -> int
Public Function EndSend (asyncResult As IAsyncResult, ByRef errorCode As SocketError) As Integer
Параметры
- asyncResult
- IAsyncResult
Объект IAsyncResult, хранящий сведения о состоянии этой асинхронной операции.
- errorCode
- SocketError
Объект SocketError, содержащий ошибку сокета.
Возвращаемое значение
Если операция завершилась успешно — значение количества байтов, переданных в объект Socket; в противном случае — ошибка, указывающая на недопустимость объекта Socket.
Исключения
asyncResult
имеет значение null
.
Параметр asyncResult
не был возвращен вызовом метода BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object).
Метод EndSend(IAsyncResult) был ранее вызван для асинхронной передачи.
Произошла ошибка при попытке доступа к сокету.
-или-
Только .NET 7 и более поздних версий Socket : объект был закрыт.
только платформа .NET Framework, .NET Core и .NET 5–6: Socket объект закрыт.
Комментарии
Важно!
Это API совместимости. Мы не рекомендуем использовать методы APM (Begin*
и End*
) для разработки новых приложений. Вместо этого используйте эквиваленты на Task
основе .
EndSendзавершает операцию, запущенную .BeginSend Необходимо передать объект , IAsyncResult созданный соответствующим BeginSend вызовом.
Если вы используете протокол без подключения, будет блокироваться до EndSend отправки датаграммы. Если вы используете протокол, ориентированный на подключение, будет блокироваться до EndSend отправки части буфера. Если возвращаемое значение из EndSend указывает, что буфер не был полностью отправлен, вызовите BeginSend метод еще раз, изменив буфер для хранения неотправленных данных.
Нет никакой гарантии, что отправляемые данные появятся в сети немедленно. Чтобы повысить эффективность сети, базовая система может отложить передачу до сбора значительного объема исходящих данных. Успешное выполнение BeginSend метода означает, что в базовой системе есть место для буферизации данных для отправки по сети.
Примечание
Если вы получаете SocketException, используйте SocketException.ErrorCode свойство , чтобы получить конкретный код ошибки.
Примечание
Все операции ввода-вывода, инициированные данным потоком, отменяются при выходе из этого потока. Ожидающая асинхронная операция может завершиться ошибкой, если поток завершится до завершения операции.
Примечание
Успешное завершение отправки не означает, что данные были успешно доставлены. Если в транспортной системе нет буферного пространства для хранения передаваемых данных, отправка будет блокироваться, если сокет не был помещен в неблокировочный режим.
Примечание
Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в статье Трассировка сети в платформа .NET Framework.
См. также раздел
- BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- AsyncState
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- NoDelay