![]() |
||||||||
|
|
||||||||
|
| ||||||||


| com exemplos em VB |
| Componente para deixar forms em Vb semelhantes às telas do winnamp |
| Componente para colocar sua aplicação VB no Systray |
| Componente para transformar sua aplicação VB em serviço |
| Ferramentas úteis para quem usa Olap Server |
| |

|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Pesquisa personalizada
Criando uma aplicação de CHAT com VB Faça o download do código fonte Vamos criar uma aplicação de chat com VB e através dela poderemos entender melhor como o Visual Basic manipula conexões de rede. Para entendermos isso precisamos primeiramente entender a rede. A comunicação em rede pode ser realizada com diferentes protocolos. Um protocolo é um padrão de transferencia de dados, como um padrão de comunicação entre dois computadores. Português e Inglês, por exemplo, poderiam ser entendidos como protocolos. Um brasileiro não consegue falar com um americano, pois ambos usam protocolos diferentes. Vou basear este artigo no protocolo TPC/IP, o mais utilizado e o padrão da Web. A comunicação em rede é feita através de uma definição de diversas camadas. Ela obedece a um padrão internacional chamado modelo OSI que divide o processo de comunicação em 7 camadas. Imagine as camadas de comunicação em rede como camadas de software. Quando um usuário digita uma letra no Word, este manipula o Windows para imprimir a letra no vídeo, o Windows por sua vez utiliza a BIOS da máquina para fazer a impressão no vídeo e esta utiliza o hardware diretamente. Ou seja, trabalho em camadas, com cada um fazendo a sua parte do trabalho. O mesmo acontece no trabalho em rede, porém o número de camadas é maior : 7 ao todo no modelo OSI, uma passando dados para a outra até que, enfim, os dados entram no cabo e saem do lado oposto para, novamente, passar pelas 7 camadas, agora em ordem inversa. Das 7 camadas existentes 2 nos interessam bastante : A camada de aplicação, a de nível mais alto, mais próxima do usuário e a camada de transporte. A camada de aplicação contém protocolos com funções específicas, direcionados a determinadas tarefas. Por exemplo, o HTTP, o FTP, o SMTP são protocolos contidos na camada de aplicação. Já a camada de transporte é responsável pela transmissão de dados entre as máquinas. É a camada de transporte que garante que os dados realmente chegaram (ou não) na máquina de destino. Todos os protocolos da camada de aplicação utilizam a camada de transporte para realizarem suas transmissões. Desta forma, quando você quer fazer alguma tarefa específica, como transferência de arquivos, pode usar FTP. Mas quando quer fazer algo diferente para sua aplicação se comunicar via internet através de um formato próprio, então você programa diretamente na camada de transporte para controlar a transmissão dos dados. A camada de transporte trabalha com 2 protocolos : UDP e TCP. A diferença entre os dois é que o protocolo TCP trabalha com o estabelecimento de conexão com o host destino enquanto que o UDP não. Desta forma o TCP é mais seguro e dá mais garantias em relação a comunicação enquanto que o UDP simplesmente transmite sem garantia de atingir o destino. No Visual Basic existem 2 componentes ActiveX que nos permitem utilizar essas camadas : O componente INET, que nos permite utilizar a camada de aplicação (HTTP/FTP) e o componente Winsock que nos permite utilizar a camada de transporte (TCP/UDP). Podemos considerar ainda os MAPI controls que permitem o envio de e-mail, mas a conexão deles é com protocolo MAPI, atingindo apenas indiretamente o SMTP. Para a montagem de uma aplicação de chat utilizaremos a camada de transporte e o protocolo Winsock para fazermos uma conexão direta com a máquina destino. Outra questão importante para conhecermos é a forma de endereçamento das máquinas. Todos sabem, com certeza, que em uma rede TCP/IP cada máquina possui um endereço IP para identifica-la na rede. Isso é bem simples. Mas imagine que em uma máquina A existam 5 programas esperando informações pela rede. Uma máquina B faz o envio para o IP da máquina A. Qual dos 5 programas irá receber a informação ? Com esse exemplo observa-se que o endereço IP não é suficiente para identificar o destino de uma comunicação em rede. É necessário uma identificação do programa que irá recebe-la. Devido a isso na camada de transporte são criadas as portas de comunicação. Todo programa que deseja receber ou transmitir uma informação pela rede precisa então abrir uma porta de comunicação para o seu uso. As portas de comunicação são numeradas de 1 a 65000. Algumas portas são classicas e já reservadas : o protocolo HTTP usa porta 80, o protocolo FTP usa porta 21, o SMTP usa porta 25, assim por diante. Por isso na hora de abrir uma porta de comunicação deve-se tomar cuidado de não colidir com uma das portas reservadas. Em geral abre-se a porta com um número alto. Os números de 1 a 65000 são portas de comunicação. Uma porta de comunicação aberta por um aplicativo e pronta para receber uma informação é chamada de um Socket. É interessante observar também que o endereçamento IP e a localização da máquina destino são controlados pelo protocolo IP, na camada de rede do modelo OSI, que fica logo abaixo da camada de transporte. A camada de transporte fica com a tarefa de controlar as portas de comunicação através dos protocolos TCP e UDP. Observe então a origem do nome TCP/IP. Vamos então iniciar a montagem da aplicação de chat. Precisaremos primeiramente montar uma tela igual a imagem abaixo. Observe que colocamos na tela caixas para a definição da porta de comunicação a ser utilizada, isso irá facilitar os testes permitindo que seja utilizada uma única máquina para testar a aplicação.
Utilizaremos protocolo TCP, demonstrando como estabelecer uma conexão com máquinas remotas. Iremos primeiramente montar o código do botão "Aguardar conexão". Este botão quando clicado deve abrir um socket na máquina para que a aplicação receba conexões de outra máquina. Na prática você faria isso no form_load ou algo assim, a colocação de tal tarefa em um botão tem apenas fins didáticos. Veja então o código do botão : Private Sub CmdAguardar_Click() End Sub Define-se a porta local que será utilizada para aguardar a conexão e chama-se o método listen do componente Winsock. Por fim atualiza-se um label com o status da aplicação para que o usuário saiba o que está acontecendo. Vejamos agora o botão para realizar a conexão : Private Sub CMDConnectar_Click() End Sub
Quando ocorre um pedido de conexão é chamado o evento ConnectionRequest do objeto WinSock. Precisamos então programar esse evento para aceitar a conexão requisitada. Veja : Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) O close inicialmente fecha sockets/conexões abertas e aceita a que está sendo requisitada. Em uma aplicação mais séria deveríamos usar algum critério para saber se devemos realmente aceitar a conexão ou não (por exemplo, será que já não existe algum usuário conectado?). Vamos então programar o evento Connect do objeto Winsock apenas para atualizar o label com o status da aplicação : Private Sub Winsock1_Connect()
Bem simples, uma única instrução para fazer o envio através da conexão já aberta. Por fim devemos programar o evento DataArrival do objeto WinSock. Veja :
Dim strData As String Simplesmente lemos a informação do componente Winsock e colocamos na caixa de texto de leitura (txtler). Para testar essa aplicação compile-a e chame o executável 2 vezes. Você terá duas janelas da aplicação de chat. Preencha a porta local em uma (3000, p.exemplo) e clique em aguardar conexão. Na outra indique a porta local (3100, p. exemplo), a porta remota (3000, o mesmo que a da outra janela) e o nome da máquina (a sua, claro). Clique em conectar. O label de status das duas janelas mostrará que você encontra-se conectado. A partir dai tudo que você digitar na textbox superior aparecerá na textbox inferior da outra janela da aplicação. Se você tiver 2 máquinas, poderá fazer esse teste remotamente.
Dennes Torres |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Veja abaixo os comentários já enviados :
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Quer
saber mais?
Faça um curso na Búfalo Informática, Treinamento e Consultoria e Prepare-se para o Mercado! Veja o que a Búfalo tem para você. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
� Búfalo Informática,
Treinamento e Consultoria -
Rua Álvaro Alvim, 37 Sala 920 - Cinelândia - Rio de Janeiro / RJ
Tel.: (21)2262-1368 (21) 9240-5134 (21) 9240-7281 e-Mail: contato@bufaloinfo.com.br