Compartilhar via


Socket.SendAsync Método

Definição

Sobrecargas

SendAsync(ReadOnlyMemory<Byte>, CancellationToken)

Envia dados em um soquete conectado.

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

Envia dados em um soquete conectado.

SendAsync(ArraySegment<Byte>, SocketFlags)

Envia dados em um soquete conectado.

SendAsync(ReadOnlyMemory<Byte>, SocketFlags, CancellationToken)

Envia dados em um soquete conectado.

SendAsync(IList<ArraySegment<Byte>>)

Envia dados em um soquete conectado.

SendAsync(ArraySegment<Byte>)

Envia dados em um soquete conectado.

SendAsync(SocketAsyncEventArgs)

Envia dados de forma assíncrona para um objeto Socket conectado.

SendAsync(ReadOnlyMemory<Byte>, CancellationToken)

Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs

Envia dados em um soquete conectado.

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)

Parâmetros

buffer
ReadOnlyMemory<Byte>

O buffer para os dados a serem enviados.

cancellationToken
CancellationToken

Um token de cancelamento que pode ser usado para cancelar a operação assíncrona.

Retornos

Uma tarefa assíncrona que é concluída com o número de bytes enviados.

Exceções

O token de cancelamento foi cancelado. Essa exceção é armazenada na tarefa retornada.

Aplica-se a

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

Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs

Envia dados em um soquete conectado.

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)

Parâmetros

buffers
IList<ArraySegment<Byte>>

Uma lista de buffers para os dados a serem enviados.

socketFlags
SocketFlags

Uma combinação bit a bit de valores SocketFlags que serão usados ao enviar os dados.

Retornos

Uma tarefa assíncrona que é concluída com o número de bytes enviados.

Exceções

buffers é null.

Ocorreu um erro ao tentar acessar o soquete.

Comentários

Esse método armazena na tarefa que retorna todas as exceções de não uso que a contraparte síncrona do método pode gerar. Se uma exceção for armazenada na tarefa retornada, essa exceção será gerada quando a tarefa for aguardada. Exceções de uso, como ArgumentException, ainda são geradas de forma síncrona. Para as exceções armazenadas, consulte as exceções geradas por Send(IList<ArraySegment<Byte>>, SocketFlags).

Aplica-se a

SendAsync(ArraySegment<Byte>, SocketFlags)

Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs

Envia dados em um soquete conectado.

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)

Parâmetros

buffer
ArraySegment<Byte>

O buffer para os dados a serem enviados.

socketFlags
SocketFlags

Uma combinação bit a bit de valores SocketFlags que serão usados ao enviar os dados.

Retornos

Uma tarefa assíncrona que é concluída com o número de bytes enviados.

Exceções

Ocorreu um erro ao tentar acessar o soquete.

Aplica-se a

SendAsync(ReadOnlyMemory<Byte>, SocketFlags, CancellationToken)

Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs

Envia dados em um soquete conectado.

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)

Parâmetros

buffer
ReadOnlyMemory<Byte>

O buffer para os dados a serem enviados.

socketFlags
SocketFlags

Uma combinação bit a bit de valores SocketFlags que serão usados ao enviar os dados.

cancellationToken
CancellationToken

Um token de cancelamento que pode ser usado para cancelar a operação assíncrona.

Retornos

Uma tarefa assíncrona que é concluída com o número de bytes enviados.

Exceções

Ocorreu um erro ao tentar acessar o soquete.

O token de cancelamento foi cancelado. Essa exceção é armazenada na tarefa retornada.

Aplica-se a

SendAsync(IList<ArraySegment<Byte>>)

Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs

Envia dados em um soquete conectado.

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)

Parâmetros

buffers
IList<ArraySegment<Byte>>

Uma lista de buffers para os dados a serem enviados.

Retornos

Uma tarefa assíncrona que é concluída com o número de bytes enviados.

Exceções

buffers é null.

Ocorreu um erro ao tentar acessar o soquete.

Comentários

Esse método armazena na tarefa que retorna todas as exceções de não uso que a contraparte síncrona do método pode gerar. Se uma exceção for armazenada na tarefa retornada, essa exceção será gerada quando a tarefa for aguardada. Exceções de uso, como ArgumentException, ainda são geradas de forma síncrona. Para as exceções armazenadas, consulte as exceções geradas por Send(IList<ArraySegment<Byte>>).

Aplica-se a

SendAsync(ArraySegment<Byte>)

Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs
Origem:
Socket.Tasks.cs

Envia dados em um soquete conectado.

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)

Parâmetros

buffer
ArraySegment<Byte>

O buffer para os dados a serem enviados.

Retornos

Uma tarefa assíncrona que é concluída com o número de bytes enviados.

Exceções

Ocorreu um erro ao tentar acessar o soquete.

Aplica-se a

SendAsync(SocketAsyncEventArgs)

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Envia dados de forma assíncrona para um objeto Socket conectado.

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

Parâmetros

e
SocketAsyncEventArgs

O objeto SocketAsyncEventArgs a ser usado nessa operação de soquete assíncrono.

Retornos

true se a operação de E/S está pendente. O evento Completed no parâmetro e será acionado após a conclusão da operação.

false se a operação de E/S foi concluída de forma síncrona. Nesse caso, o evento Completed no parâmetro e não será gerado e o objeto e passado como um parâmetro poderá ser examinado imediatamente depois que a chamada do método for retornada para recuperar o resultado da operação.

Exceções

As propriedades Buffer ou BufferList no parâmetro e devem referenciar buffers válidos. Uma ou a outra dessas propriedades poderá ser definida, mas não ambas ao mesmo tempo.

Uma operação de soquete já estava em andamento com o objeto SocketAsyncEventArgs especificado no parâmetro e.

O Socket ainda não está conectado ou não foi obtido por meio de um método Accept(), AcceptAsync(SocketAsyncEventArgs) ou BeginAccept.

Comentários

O SendAsync método é usado para gravar dados de saída de um ou mais buffers em um soquete orientado a conexão. No entanto, esse método também pode ser usado em soquetes sem conexão que especificaram um host remoto em uma operação de conexão.

O SendAsync método inicia uma operação de envio assíncrona para o host remoto estabelecido no Acceptmétodo , AcceptAsync, BeginAccept, BeginConnect, Connectou ConnectAsync .

As seguintes propriedades e eventos no System.Net.Sockets.SocketAsyncEventArgs objeto são necessários para chamar esse método com êxito:

O chamador pode definir a SocketAsyncEventArgs.UserToken propriedade como qualquer objeto de estado de usuário desejado antes de chamar o SendAsync método , para que as informações possam ser recuperadas no método de retorno de chamada. Se o retorno de chamada precisar de mais informações do que um único objeto, uma classe pequena poderá ser criada para manter as outras informações de estado necessárias como membros.

O SendAsync método gerará uma exceção se você não chamar Acceptprimeiro , AcceptAsync, BeginAcceptBeginConnect, Connectou ConnectAsync.

Chamar o SendAsync método oferece a capacidade de enviar dados dentro de um thread de execução separado.

Para soquetes orientados a mensagens, não exceda o tamanho máximo da mensagem do provedor de serviços de soquetes do Windows subjacente. Se os dados forem muito longos para passar atomicamente pelo provedor de serviços subjacente, nenhum dado será transmitido e o SendAsync método gerará um SocketException com o SocketAsyncEventArgs.SocketError definido para o código de erro nativo Winsock WSAEMSGSIZE (10040).

Observe que a conclusão bem-sucedida do SendAsync método não indica que os dados foram entregues com êxito.

Confira também

Aplica-se a