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


Socket.EndSend Метод

Определение

Завершает ожидающий асинхронный отправку.

Перегрузки

Имя Описание
EndSend(IAsyncResult)

Завершает ожидающий асинхронный отправку.

EndSend(IAsyncResult, SocketError)

Завершает ожидающий асинхронный отправку.

EndSend(IAsyncResult)

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
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
Исходный код:
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.

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

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