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


Socket.SendAsync Метод

Определение

Перегрузки

SendAsync(ReadOnlyMemory<Byte>, CancellationToken)

Отправляет данные в подключенный сокет.

SendAsync(IList<ArraySegment<Byte>>, SocketFlags)

Отправляет данные в подключенный сокет.

SendAsync(ArraySegment<Byte>, SocketFlags)

Отправляет данные в подключенный сокет.

SendAsync(ReadOnlyMemory<Byte>, SocketFlags, CancellationToken)

Отправляет данные в подключенный сокет.

SendAsync(IList<ArraySegment<Byte>>)

Отправляет данные в подключенный сокет.

SendAsync(ArraySegment<Byte>)

Отправляет данные в подключенный сокет.

SendAsync(SocketAsyncEventArgs)

Выполняет асинхронную передачу данных на подключенный объект Socket.

SendAsync(ReadOnlyMemory<Byte>, CancellationToken)

Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs

Отправляет данные в подключенный сокет.

public System.Threading.Tasks.ValueTask<int> SendAsync (ReadOnlyMemory<byte> buffer, System.Threading.CancellationToken cancellationToken = default);
member this.SendAsync : ReadOnlyMemory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendAsync (buffer As ReadOnlyMemory(Of Byte), Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

Параметры

buffer
ReadOnlyMemory<Byte>

Буфер для отправляемого данных.

cancellationToken
CancellationToken

Маркер отмены, который можно использовать для отмены асинхронной операции.

Возвращаемое значение

Асинхронная задача, которая завершается числом отправленных байтов.

Исключения

Маркер отмены был отменен. Это исключение сохраняется в возвращаемой задаче.

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

SendAsync(IList<ArraySegment<Byte>>, SocketFlags)

Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs

Отправляет данные в подключенный сокет.

public:
 System::Threading::Tasks::Task<int> ^ SendAsync(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public System.Threading.Tasks.Task<int> SendAsync (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.SendAsync : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> System.Threading.Tasks.Task<int>
Public Function SendAsync (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Task(Of Integer)

Параметры

buffers
IList<ArraySegment<Byte>>

Список буферов для отправляемых данных.

socketFlags
SocketFlags

Побитовое сочетание значений SocketFlags, которые будут использоваться при отправке данных.

Возвращаемое значение

Асинхронная задача, которая завершается числом отправленных байтов.

Исключения

buffers имеет значение null.

Произошла ошибка при попытке доступа к сокету.

Socket был закрыт.

Комментарии

Этот метод сохраняет в задаче все исключения, не относящиеся к использованию, которые может создавать синхронный аналог метода. Если исключение сохраняется в возвращаемой задаче, это исключение будет создано при ожидании задачи. Исключения использования, такие как ArgumentException, по-прежнему создаются синхронно. Хранимые исключения см. в разделе исключения, создаваемые Send(IList<ArraySegment<Byte>>, SocketFlags).

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

SendAsync(ArraySegment<Byte>, SocketFlags)

Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs

Отправляет данные в подключенный сокет.

public:
 System::Threading::Tasks::Task<int> ^ SendAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public System.Threading.Tasks.Task<int> SendAsync (ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.SendAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags -> System.Threading.Tasks.Task<int>
Public Function SendAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags) As Task(Of Integer)

Параметры

buffer
ArraySegment<Byte>

Буфер для отправляемого данных.

socketFlags
SocketFlags

Побитовое сочетание значений SocketFlags, которые будут использоваться при отправке данных.

Возвращаемое значение

Асинхронная задача, которая завершается числом отправленных байтов.

Исключения

Произошла ошибка при попытке доступа к сокету.

Socket был закрыт.

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

SendAsync(ReadOnlyMemory<Byte>, SocketFlags, CancellationToken)

Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs

Отправляет данные в подключенный сокет.

public System.Threading.Tasks.ValueTask<int> SendAsync (ReadOnlyMemory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Threading.CancellationToken cancellationToken = default);
member this.SendAsync : ReadOnlyMemory<byte> * System.Net.Sockets.SocketFlags * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendAsync (buffer As ReadOnlyMemory(Of Byte), socketFlags As SocketFlags, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

Параметры

buffer
ReadOnlyMemory<Byte>

Буфер для отправляемого данных.

socketFlags
SocketFlags

Побитовое сочетание значений SocketFlags, которые будут использоваться при отправке данных.

cancellationToken
CancellationToken

Маркер отмены, который можно использовать для отмены асинхронной операции.

Возвращаемое значение

Асинхронная задача, которая завершается числом отправленных байтов.

Исключения

Произошла ошибка при попытке доступа к сокету.

Socket был закрыт.

Маркер отмены был отменен. Это исключение сохраняется в возвращаемой задаче.

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

SendAsync(IList<ArraySegment<Byte>>)

Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs

Отправляет данные в подключенный сокет.

public:
 System::Threading::Tasks::Task<int> ^ SendAsync(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public System.Threading.Tasks.Task<int> SendAsync (System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.SendAsync : System.Collections.Generic.IList<ArraySegment<byte>> -> System.Threading.Tasks.Task<int>
Public Function SendAsync (buffers As IList(Of ArraySegment(Of Byte))) As Task(Of Integer)

Параметры

buffers
IList<ArraySegment<Byte>>

Список буферов для отправляемых данных.

Возвращаемое значение

Асинхронная задача, которая завершается числом отправленных байтов.

Исключения

buffers имеет значение null.

Произошла ошибка при попытке доступа к сокету.

Socket был закрыт.

Комментарии

Этот метод сохраняет в задаче все исключения, не относящиеся к использованию, которые может создавать синхронный аналог метода. Если исключение сохраняется в возвращаемой задаче, это исключение будет создано при ожидании задачи. Исключения использования, такие как ArgumentException, по-прежнему создаются синхронно. Хранимые исключения см. в разделе исключения, создаваемые Send(IList<ArraySegment<Byte>>).

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

SendAsync(ArraySegment<Byte>)

Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs

Отправляет данные в подключенный сокет.

public:
 System::Threading::Tasks::Task<int> ^ SendAsync(ArraySegment<System::Byte> buffer);
public System.Threading.Tasks.Task<int> SendAsync (ArraySegment<byte> buffer);
member this.SendAsync : ArraySegment<byte> -> System.Threading.Tasks.Task<int>
Public Function SendAsync (buffer As ArraySegment(Of Byte)) As Task(Of Integer)

Параметры

buffer
ArraySegment<Byte>

Буфер для отправляемого данных.

Возвращаемое значение

Асинхронная задача, которая завершается числом отправленных байтов.

Исключения

Произошла ошибка при попытке доступа к сокету.

Socket был закрыт.

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

SendAsync(SocketAsyncEventArgs)

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs

Выполняет асинхронную передачу данных на подключенный объект Socket.

public:
 bool SendAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendAsync (e As SocketAsyncEventArgs) As Boolean

Параметры

e
SocketAsyncEventArgs

Объект SocketAsyncEventArgs для использования в данной асинхронной операции сокета.

Возвращаемое значение

true, если операция ввода-вывода находится в состоянии ожидания. По завершении операции создается событие Completed в параметре e.

false, если операция ввода-вывода завершена синхронно. В данном случае событие Completed на параметре e не будет создано и объект e, передаваемый как параметр, можно изучить сразу после получения результатов вызова метода для извлечения результатов операции.

Исключения

Свойства Buffer или BufferList на параметре e должны ссылаться на допустимые буферы. Может быть установлено одно из этих свойств, но нельзя одновременно устанавливать оба свойства.

Операция сокета уже выполнялась с использованием объекта SocketAsyncEventArgs, указанного в параметре e.

Socket был закрыт.

Объект Socket уже не подключен или он был получен посредством метода Accept(), AcceptAsync(SocketAsyncEventArgs) или BeginAccept.

Комментарии

Метод SendAsync используется для записи исходящих данных из одного или нескольких буферов в сокете, ориентированном на подключение. Однако этот метод также можно использовать для сокетов без подключения, которые указали удаленный узел для операции подключения.

Метод SendAsync запускает асинхронную операцию отправки на удаленный узел, установленный в методе Accept, AcceptAsync, BeginAccept, BeginConnect, Connectили ConnectAsync .

Для успешного System.Net.Sockets.SocketAsyncEventArgs вызова этого метода требуются следующие свойства и события объекта :

Вызывающий объект может задать SocketAsyncEventArgs.UserToken для свойства любой объект пользовательского состояния, требуемый перед вызовом SendAsync метода , чтобы данные можно было получить в методе обратного вызова. Если для обратного вызова требуется больше сведений, чем для одного объекта, можно создать небольшой класс для хранения других необходимых сведений о состоянии в качестве членов.

Метод вызовет исключение, если вы не вызываете SendAsyncAccept, AcceptAsync, BeginAcceptBeginConnect, Connectили ConnectAsync.

SendAsync Вызов метода позволяет отправлять данные в отдельном потоке выполнения.

Для сокетов, ориентированных на сообщения, не следует превышать максимальный размер сообщения базового поставщика службы сокетов Windows. Если данные слишком длинные для атомарной передачи через базовый поставщик служб, данные не передаются и SendAsync метод выдает с SocketAsyncEventArgs.SocketError набором SocketException собственный код ошибки Winsock WSAEMSGSIZE (10040).

Обратите внимание, что успешное SendAsync завершение метода не означает, что данные были успешно доставлены.

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

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