Socket.SendPacketsAsync(SocketAsyncEventArgs) 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 uma coleção de arquivos ou buffers de dados de memória de forma assíncrona para um objeto conectado Socket .
public:
bool SendPacketsAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendPacketsAsync(System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendPacketsAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendPacketsAsync (e As SocketAsyncEventArgs) As Boolean
Parâmetros
O SocketAsyncEventArgs objeto a ser usado para esta operação de soquete assíncrona.
Retornos
true se a operação de E/S estiver pendente. O Completed evento no e parâmetro será gerado após a conclusão da operação.
false se a operação de E/S for concluída de forma síncrona. Nesse caso, Completed o e evento no parâmetro não será gerado e o e objeto passado como um parâmetro poderá ser examinado imediatamente após a chamada do método retornar para recuperar o resultado da operação.
Exceções
O arquivo especificado na FilePath propriedade não foi encontrado.
Uma operação de soquete já estava em andamento usando o SocketAsyncEventArgs objeto especificado no e parâmetro.
Não Socket está conectado a um host remoto.
O Socket foi fechado.
Um sem Socket conexão está sendo usado e o arquivo enviado excede o tamanho máximo do pacote do transporte subjacente.
Comentários
O SendPacketsAsync método é usado para enviar uma coleção de arquivos ou buffers de dados de memória para o host remoto. O Socket host remoto já deve estar conectado.
Se um System.Net.Sockets.SendPacketsElement arquivo fizer referência a um arquivo no diretório de trabalho, ele poderá ser identificado apenas com o nome do arquivo; caso contrário, o caminho completo e o nome do arquivo deverão ser especificados. Há suporte para curingas e nomes de compartilhamento UNC. Se o arquivo não for encontrado, FileNotFoundException será gerado.
Para ser notificado sobre a conclusão, você deve criar um método de retorno de chamada que implemente o delegado EventHandler<SocketAsyncEventArgs> e anexe o retorno de chamada ao SocketAsyncEventArgs.Completed evento.
A SocketAsyncEventArgs.SendPacketsFlags propriedade no e parâmetro fornece ao provedor de serviços Window Sockets informações adicionais sobre a transferência de arquivo. Para obter mais informações sobre como usar esse parâmetro, consulte TransmitFileOptions.
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 para qualquer objeto de estado de usuário desejado antes de chamar o SendPacketsAsync método, para que as informações sejam recuperáveis 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.
Esse método usa a função TransmitPackets encontrada na API do Windows Sockets 2. Para obter mais informações sobre a função TransmitPackets e seus sinalizadores, consulte a documentação do Windows Sockets .
Embora pretenda protocolos orientados à conexão, o SendPacketsAsync método também funciona para protocolos sem conexão, desde que você primeiro chame o BeginConnectConnectmétodo ou ConnectAsync o método para estabelecer um host remoto padrão. Com protocolos sem conexão, você também deve ter certeza de que o tamanho do arquivo 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 SendPacketsAsync gerará uma SocketException exceção.
O SendPacketsAsync método é otimizado de acordo com o sistema operacional no qual ele é usado. Nas edições do Windows Server, o SendPacketsAsync método é otimizado para alto desempenho.
Nas edições de cliente do Windows, o SendPacketsAsync método é otimizado para utilização mínima de memória e recursos.
O uso do TransmitFileOptions.UseKernelApc sinalizador na SocketAsyncEventArgs.SendPacketsFlags propriedade no e parâmetro pode proporcionar benefícios significativos de desempenho. Se o thread que inicia a SendPacketsAsync chamada de método estiver sendo usado para cálculos pesados, é possível, embora improvável, que as APCs possam ser impedidas de iniciar. Observe que há uma diferença entre APCs do kernel e do modo de usuário. As APCs do kernel são iniciadas quando um thread está em um estado de espera. As APCs no modo de usuário são iniciadas quando um thread está em um estado de espera alertável