Esse artigo faz parte da revista Clube Delphi edição 20. Clique aqui para ler todos os artigos desta edição

 

Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML. 

 

Cmunique-se Utilizando Sockets


Os sockets são muito conhecidos por programadores de aplicativos para comunicação remota. Através de uma porta, você poderá conectar-se a outro computador ou aceitar conexões de outras máquinas. O Delphi facilita muito o trabalho com sockets, usando a camada de transporte TCP, com os componentes TServerSocket e TClientSocket, disponíveis na guia Internet.

Com o componente TServerSocket, você pode aceitar e gerenciar conexões remotas ao seu aplicativo, podendo limitar o número de clientes conectados, enviar dados para um cliente específico ou fazer um broadcast, ou seja, enviar dados para todos os clientes. Um servidor fica “ouvindo” em uma porta de comunicação.

Assim como nos protocolos HTTP, SMTP, POP, entre outros, você terá que especificar uma porta para seu aplicativo servidor. Para ter conhecimento das portas utilizadas e comandos dos protocolos, visite o site www.rfc.net, onde todos os protocolos da Internet são discutidos.

Componentes básicos

Com TClientSocket, você pode conectar um aplicativo cliente a um aplicativo servidor. Ele te permite enviar e requisitar dados ao servidor e esperar uma resposta para o tratamento dos dados ou erros retornados.

É possível, ainda, encontrar um exemplo de um chat, que permite a conversação entre duas máquinas, no diretório do Delphi em \Demos\Internet\Chat. Veja-o em execução na Figura 1.

Figura 1. Exemplo de chat no Delphi

 Com o componente TServerSocket, permitiremos conexões ao nosso aplicativo, “ouvindo” em uma porta de comunicação, que deve ser especificada como um número inteiro.

É necessário, também, especificar uma porta não ocupada por outro aplicativo. Caso você tenha instalado um Servidor HTTP em seu computador, a porta 80 já estará ocupada enquanto o servidor estiver ativo, não sendo possível utilizá-la. Não é comum utilizar uma porta específica de um protocolo. Por exemplo: a porta 80, que é a porta padrão para o protocolo HTTP, não será usada, por convenção, por nenhum outro protocolo, assim como a porta 25 (SMTP), 110 (POP), entre outras.

Iniciando a comunicação

Para iniciarmos a comunicação, vamos especificar uma porta para nosso aplicativo: 5000. Caso você possua um aplicativo que esteja ocupando esta porta, utilize outro número. Você pode especificar um serviço, ao invés de uma porta. O seu número deverá estar vinculado ao serviço no arquivo SERVICES, geralmente encontrado em C:\Windows. Por exemplo, com o serviço GDS_DB, um serviço do Servidor/Cliente InterBase está vinculado à porta 3050 do serviço de transporte TCP.

Para iniciar um pequeno projeto para comunicação utilizando sockets, coloque um componente TServerSocket em seu formulário e renomeie-o para sktServidor. Coloque um TLabel, um TEdit, um TButton e um TMemo. Renomeie também o componente Label1 para lblStatus, o Edit1 para edtPorta, o Button1 para btnAtivar, e Memo1 para mmoEvento.

Altere as propriedades dos componentes como abaixo:

Componente

Propriedade

Valor

EdtPorta

Text

5000

BtnAtivar

...

Quer ler esse conteúdo completo? Tenha acesso completo