Escolar Documentos
Profissional Documentos
Cultura Documentos
<beto.corujao@gmail.com>
ndice
Introduo Criando uma Conexo FTP Criando uma Conexo HTTP Criando Aplicaes cliente-servidor com TCP Enviando e Recebendo datagramas UDP
Introduo
O QT permite que trabalhemos com os protocolos FTP e HTTP. Os protocolos FTP permitem o download e upload de arquivos para uma mquina que funcione com servidor. Os protocolos HTTP so usados normalmente para o envio de pedidos de servidores web e recuperao dos resultados. Para isso disponibiliza as classes QFtp e QHttp (provenientes de QNetwork).
Introduo
Qt tambm prov as classes QTcpSocket e QUdpSocket, que implementam os protocolos de transporte TCP e UDP. Com estes dois protocolos aplicaes cliente-servidor. possvel criar
TCP um protocolo da camada de transporte, orientado a conexo, que permite a transferncia de dados entre os ns da rede. UDP prov um servio sem conexo no confivel, usando IP para transportar mensagens entre duas
Introduo
No caso de servidores precisamos da classe QTcpServer para lidar com conexes TCP. J conexes seguras podem ser estabelecidas com a classe QSslSocket ao invs de QtcpSocket.
A classe QFtp implementa o lado cliente do protocolo FTP no Qt. A classe QFtp trabalha de forma assncrona para que no haja funes de bloqueio. Quando chamamos funes como get() e put(), por exemplo, estas funes retornam imediatamente mas a sua operao ser agendada para uma execuo posterior.
Isso garante que a interface do usurio continuar respondendo enquanto os comandos FTP so executados. Os resultados das operaes programadas so relatados atravs de sinais. Esta abordagem depende do ciclo de eventos estar em operao.
A classe QFtp prov muitos comandos FTP: connectToHost(), login(), close(), list(), cd(), get(), put(), remove(), mkdir(), rmdir(), rename() e rawCommand(). So comandos agendveis do FTP que retornam um ID que identifica o comando. Tambm possvel definir o modo e tipo de transferncia (passivo e binrio como default, respectivamente).
Quando a execuo de um comando iniciado, o sinal commandStarted() com o ID do comando emitido. Quando o comando terminado, o sinal commandFinished() emitido com o ID do comando e um bool que indica se o comando terminou com um erro ou com xito.
Exemplo:
Um novo exemplo ser construdo utilizando a classe QCoreAplication, que nos permite trabalhar com aplicativos de console.
A classe FtpGet tem uma funo pblica, GetFile(), que recupera o arquivo especificado por uma URL. A classe Qurl prov uma interface de alto nvel para extrair as diferentes partes de uma URL, como o nome do arquivo, caminho, protocolo e porta. O Slot ftpDone() chamado quando a Transferncia completada, emitindo A varivel privada ftp: encapsula a um sinaldone() ao baixar o arquivo. conexo um servidor FTP. A varivel Privada file: usada para escrever o arquivo baixado em disco.
Url a ser a acessada: porta de acesso Nmero da ftp://127.0.0.1 - servidor ftp (padro: 21) ao (localhost) const QString &user, const QString &password
Outro jeito de prover feedback conectar o sinal stateChanged(), de QFtp, que emitido a qualquer momento que a conexo entrar em um novo estado(QFtp::Connecting, QFtp::Connected, QFtp::Logging etc.)
Em arquivos de aplicaes '.pro', ns precisamos da seguinte linha para linkar a biblioteca : QtNetwork: QT+= network
Quando chamamos uma funo como get() ou post(), a funo d um retorno imediato. A transferncia da dados ocorre depois, quando o controle retorna para um loop do Qt. Isto garante que a interface de usurio da aplicao no fique aguardando enquanto requisies HTTP esto sendo processadas.
A lista de viagens de trem um QTableWidget; A parte mais baixa da tela ocupada por um Qlabel que mostra o status da ltima operao e um QProgressBar.
loop forever necessrio porque no necessariamente obtemos um bloco por vez do servidor;
Podemos receber um bloco inteiro, ou parte de um, um bloco e meio, ou todos blocos de uma vez;
Iremos ver como se usa UDP no Qt atravs das aplicaes Weather Baloon e Weather Station;
Referncias