Socket.BeginSendTo Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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);
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 base zero em buffer onde começar a enviar dados.
- size
- Int32
O número de bytes a enviar.
- socketFlags
- SocketFlags
Uma combinação bit a bit dos SocketFlags valores.
- callback
- AsyncCallback
O AsyncCallback delegado.
- state
- Object
Um objeto que contém informação de estado para este pedido.
Devoluções
E isso faz IAsyncResult referência ao envio assíncrono.
Exceções
Apenas framework .NET: Ocorreu um erro ao tentar aceder ao socket.
offset é inferior a 0.
-ou-
offset é maior do que o comprimento de buffer.
-ou-
size é inferior a 0.
-ou-
size é maior do que o comprimento de buffer menos o valor do offset parâmetro.
O Socket local foi encerrado.
Um chamador mais acima na pilha de chamadas não tem permissão para a operação solicitada.
Observações
Importante
Isto é uma API de compatibilidade. Não recomendamos o uso dos métodos APM (Begin* e End*) para novos desenvolvimentos. Em vez disso, use os Taskequivalentes baseados em .
Pode enviar um callback que implementa AsyncCallback para BeginSendTo ser notificado sobre a conclusão da operação. Note que, se a pilha de rede subjacente completar a operação de forma síncrona, o callback será executado em linha, durante a chamada para BeginSendTo. Neste caso, a CompletedSynchronously propriedade no retorno IAsyncResult será definida para true indicar que o método foi concluído de forma síncrona. Use a AsyncState propriedade de para IAsyncResult obter o objeto de estado passado para o BeginSendTo método.
A BeginSendTo operação deve ser realizada chamando o EndSendTo método. Normalmente, o método é invocado pelo delegado fornecido AsyncCallback . EndSendTo irá bloquear o thread que chama até que a operação seja concluída.
Se estiver a usar um protocolo orientado a conexão, deve primeiro chamar o , , , ou BeginAccept método, ou BeginSendTo irá lançar um SocketException. AcceptBeginConnectConnect
BeginSendTo irá ignorar o remoteEP parâmetro e enviar dados para o EndPoint estabelecido no Connect, BeginConnect, Accept, ou BeginAccept método.
Se estiver a usar um protocolo sem conexão, não precisa de estabelecer um host remoto predefinido com o Connect método ou BeginConnect antes de chamar SendTo. Só precisa de fazer isto se pretende chamar o BeginSend método. Se chamar o Connect método ou BeginConnect antes de chamar SendTo, o remoteEP parâmetro irá sobrepor o host remoto predefinido especificado apenas para essa operação de envio. Também não é obrigado a ligar para o Bind método. Neste caso, o fornecedor de serviços subjacente atribuirá o endereço de rede local e o número de porta mais apropriados. Use um número de porta zero se quiser que o fornecedor de serviço subjacente selecione uma porta livre. Se precisar de identificar o endereço de rede local atribuído e o número de porta, pode usar a LocalEndPoint propriedade depois de o EndSendTo método ser concluído com sucesso.
Se quiser enviar dados para um endereço de broadcast, deve primeiro chamar o SetSocketOption método e definir a opção socket para SocketOptionName.Broadcast. -Deve também garantir que o tamanho do seu buffer não excede o tamanho máximo do pacote do fornecedor subjacente. Se o fizer, o datagrama não será enviado e EndSendTo irá lançar um SocketException.
Se especificar o DontRoute flag como parâmetro socketflags , os dados que está a enviar não serão encaminhados.
Note
Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro.
Note
Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.
Note
O contexto de execução (o contexto de segurança, o utilizador personificado e o contexto de chamada) é armazenado em cache para os métodos assíncronos Socket . Após a primeira utilização de um determinado contexto (um método assíncrono Socket específico, uma instância específica Socket e um callback específico), as utilizações subsequentes desse contexto verão uma melhoria de desempenho.