Compartilhar via


Socket.SendToAsync Método

Definição

Sobrecargas

SendToAsync(SocketAsyncEventArgs)

Envia dados de maneira assíncrona para um host remoto específico.

SendToAsync(ArraySegment<Byte>, EndPoint)

Envia dados para o host remoto especificado.

SendToAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

Envia dados para o host remoto especificado.

SendToAsync(ReadOnlyMemory<Byte>, EndPoint, CancellationToken)

Envia dados para o host remoto especificado.

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, EndPoint, CancellationToken)

Envia dados para o host remoto especificado.

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, SocketAddress, CancellationToken)

Envia dados para um ponto de extremidade específico usando o SocketFlags especificado.

SendToAsync(SocketAsyncEventArgs)

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

Envia dados de maneira assíncrona para um host remoto específico.

public:
 bool SendToAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendToAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendToAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendToAsync (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

O RemoteEndPoint não pode ser nulo.

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

O protocolo especificado é orientado para a conexão, mas o Socket ainda não está conectado.

Comentários

O SendToAsync método inicia uma operação de envio assíncrona para o host remoto especificado na SocketAsyncEventArgs.RemoteEndPoint propriedade do e parâmetro . Chamar o SendToAsync método oferece a capacidade de enviar dados dentro de um thread de execução separado. Embora esse método se destine a protocolos sem conexão, SendToAsync funciona com protocolos orientados a conexão e sem conexão.

Para ser notificado sobre a conclusão, você deve criar um método de retorno de chamada que implementa o delegado EventHandler<SocketAsyncEventArgs> e anexar o retorno de chamada ao SocketAsyncEventArgs.Completed evento.

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 SendToAsync 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.

Se você estiver usando um protocolo orientado a conexão, primeiro chame o Acceptmétodo , AcceptAsync, BeginAccept, BeginConnect, Connectou ConnectAsync . Caso contrário SendToAsync , gerará um SocketException. Ao usar um protocolo orientado a conexão, o SendToAsync método ignorará a SocketAsyncEventArgs.RemoteEndPoint propriedade e enviará dados para o System.Net.EndPoint estabelecido no Acceptmétodo , AcceptAsync, BeginAccept, BeginConnect, Connectou ConnectAsync .

Se você estiver usando um protocolo sem conexão, não precisará estabelecer um host remoto padrão com o BeginConnectmétodo , Connectou ConnectAsync antes de chamar SendToAsync. Você só precisará fazer isso se pretender chamar os BeginSend métodos ou SendAsync . Se você chamar o BeginConnectmétodo , Connectou ConnectAsync antes de chamar SendToAsync, a SocketAsyncEventArgs.RemoteEndPoint propriedade substituirá o host remoto padrão especificado somente para essa operação de envio. Você também não precisa chamar o Bind método . Nesse caso, o provedor de serviços subjacente atribuirá o endereço IP da rede local e o número da porta mais apropriados. Use um número de porta zero se quiser que o provedor de serviços subjacente selecione uma porta gratuita. Se você precisar identificar o endereço IP da rede local atribuído e o número da porta, poderá usar a LocalEndPoint propriedade depois que o SocketAsyncEventArgs.Completed evento for sinalizado e os delegados associados forem chamados.

Se você quiser enviar dados para um endereço de difusão, primeiro chame o SetSocketOption método e defina a opção de soquete como SocketOptionName.Broadcast true. Você também deve ter certeza de que o tamanho do buffer não excede o tamanho máximo do pacote do provedor de serviços subjacente. Se isso acontecer, o datagrama não será enviado e SendToAsync gerará um SocketException.

Se você especificar o sinalizador DontRoute na SocketAsyncEventArgs.SocketFlags propriedade , os dados que você está enviando não serão roteado.

Para soquetes orientados a mensagens, é necessário ter cuidado para não exceder o tamanho máximo da mensagem do transporte subjacente. Se o tamanho do buffer exceder o tamanho máximo do pacote do provedor de serviços subjacente, o datagrama não será enviado e SendToAsync gerará um SocketException. A conclusão bem-sucedida de um SendToAsync método não indica que os dados foram entregues com êxito.

Confira também

Aplica-se a

SendToAsync(ArraySegment<Byte>, EndPoint)

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

Envia dados para o host remoto especificado.

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

Parâmetros

buffer
ArraySegment<Byte>

O buffer para os dados a serem enviados.

remoteEP
EndPoint

O host remoto para o qual enviar os dados.

Retornos

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

Exceções

remoteEP é null.

Ocorreu um erro ao tentar acessar o soquete.

Aplica-se a

SendToAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

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

Envia dados para o host remoto especificado.

public:
 System::Threading::Tasks::Task<int> ^ SendToAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public System.Threading.Tasks.Task<int> SendToAsync (ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendToAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> System.Threading.Tasks.Task<int>
Public Function SendToAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint) 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.

remoteEP
EndPoint

O host remoto para o qual enviar os dados.

Retornos

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

Exceções

remoteEP é null.

Ocorreu um erro ao tentar acessar o soquete.

Aplica-se a

SendToAsync(ReadOnlyMemory<Byte>, EndPoint, CancellationToken)

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

Envia dados para o host remoto especificado.

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

Parâmetros

buffer
ReadOnlyMemory<Byte>

O buffer para os dados a serem enviados.

remoteEP
EndPoint

O host remoto para o qual 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

remoteEP é null.

Ocorreu um erro ao tentar acessar o soquete.

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

Aplica-se a

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, EndPoint, CancellationToken)

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

Envia dados para o host remoto especificado.

public System.Threading.Tasks.ValueTask<int> SendToAsync (ReadOnlyMemory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, System.Threading.CancellationToken cancellationToken = default);
member this.SendToAsync : ReadOnlyMemory<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendToAsync (buffer As ReadOnlyMemory(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint, 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.

remoteEP
EndPoint

O host remoto para o qual 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

remoteEP é null.

Ocorreu um erro ao tentar acessar o soquete.

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

Aplica-se a

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, SocketAddress, CancellationToken)

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

Envia dados para um ponto de extremidade específico usando o SocketFlags especificado.

public System.Threading.Tasks.ValueTask<int> SendToAsync (ReadOnlyMemory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.SocketAddress socketAddress, System.Threading.CancellationToken cancellationToken = default);
member this.SendToAsync : ReadOnlyMemory<byte> * System.Net.Sockets.SocketFlags * System.Net.SocketAddress * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendToAsync (buffer As ReadOnlyMemory(Of Byte), socketFlags As SocketFlags, socketAddress As SocketAddress, 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 SocketFlags valores que serão usados ao enviar os dados.

socketAddress
SocketAddress

O SocketAddress que representa o destino dos 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

socketAddress é null.

Ocorreu um erro ao tentar acessar o soquete.

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

Aplica-se a