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


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.

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

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

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.

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

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