Socket.BeginSendTo Método

Definição

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

buffer
Byte[]

Um array de tipo Byte que contém os dados a enviar.

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.

remoteEP
EndPoint

E EndPoint isso representa o dispositivo remoto.

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

buffer é null.

-ou-

remoteEP é null.

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.

Aplica-se a

Ver também