Socket.BeginSendTo Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Envia dados de forma assíncrona para um host remoto específico.
public:
IAsyncResult ^ BeginSendTo(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSendTo(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendTo(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, AsyncCallback callback, object state);
member this.BeginSendTo : byte[] * int * int * System.Net.Sockets.SocketFlags * System.Net.EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendTo (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, remoteEP As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult
Parâmetros
- offset
- Int32
A posição baseada em zero na buffer qual começar a enviar dados.
- size
- Int32
O número de bytes a serem enviados.
- socketFlags
- SocketFlags
Uma combinação bit a bit dos SocketFlags valores.
- callback
- AsyncCallback
O AsyncCallback delegado.
- state
- Object
Um objeto que contém informações de estado para essa solicitação.
Retornos
Um IAsyncResult que faz referência ao envio assíncrono.
Exceções
.NET Framework e .NET 5 e somente anteriores: ocorreu um erro ao tentar acessar o soquete.
offset é menor que 0.
- ou -
offset é maior que o comprimento de buffer.
- ou -
size é menor que 0.
- ou -
size é maior que o comprimento de buffer menos o valor do offset parâmetro.
O Socket foi fechado.
Um chamador mais alto na pilha de chamadas não tem permissão para a operação solicitada.
Comentários
Importante
Essa é uma API de compatibilidade. Não recomendamos usar os métodos APM (Begin* e End*) para o novo desenvolvimento. Em vez disso, use os Taskequivalentes baseados.
Você pode passar um retorno de chamada que implementa AsyncCallback para BeginSendTo ser notificado sobre a conclusão da operação. Observe que, se a pilha de rede subjacente concluir a operação de forma síncrona, o retorno de chamada será executado embutido durante a chamada para BeginSendTo. Nesse caso, a CompletedSynchronously propriedade no retornado IAsyncResult será definida para true indicar que o método foi concluído de forma síncrona. Use a AsyncState propriedade do IAsyncResult objeto de estado passado para o BeginSendTo método.
A BeginSendTo operação deve ser concluída chamando o EndSendTo método. Normalmente, o método é invocado pelo delegado fornecido AsyncCallback . EndSendTo bloqueará o thread de chamada até que a operação seja concluída.
Se você estiver usando um protocolo orientado à conexão, primeiro deverá chamar o Connectmétodo , BeginConnectou AcceptBeginAccept o método, ou BeginSendTo gerará um SocketException.
BeginSendToignorará o remoteEP parâmetro e enviará dados para o EndPoint método estabelecido no Connectmétodo, AcceptBeginConnectou BeginAccept no método.
Se você estiver usando um protocolo sem conexão, não precisará estabelecer um host remoto padrão com o método ou BeginConnect o Connect método antes de chamarSendTo. Você só precisa fazer isso se pretende chamar o BeginSend método. Se você chamar o Connect método ou BeginConnect o método antes da chamada SendTo, o remoteEP parâmetro substituirá o host remoto padrão especificado somente para essa operação de envio. Você também não é obrigado a chamar o Bind método. Nesse caso, o provedor de serviços subjacente atribuirá o endereço de rede local mais apropriado e o número da porta. Use um número de porta zero se desejar que o provedor de serviços subjacente selecione uma porta gratuita. Se você precisar identificar o endereço de rede local atribuído e o número da porta, poderá usar a LocalEndPoint propriedade depois que o EndSendTo método for concluído com êxito.
Se você quiser enviar dados para um endereço de transmissão, primeiro chame o SetSocketOption método e defina a opção de soquete como SocketOptionName.Broadcast. -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 EndSendTo gerará um SocketException.
Se você especificar o DontRoute sinalizador como o socketflags parâmetro, os dados que você está enviando não serão roteado.
Observação
Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
Observação
Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de Rede no .NET Framework.
Observação
O contexto de execução (o contexto de segurança, o usuário representado e o contexto de chamada) é armazenado em cache para os métodos assíncronos Socket . Após o primeiro uso de um contexto específico (um método assíncrono Socket específico, uma instância específica Socket e um retorno de chamada específico), os usos subsequentes desse contexto verão uma melhoria de desempenho.