A interoperabilidade de sistemas é um requisito fundamental no mundo tecnológico!
Quem gosta de tecnologia, certamente já se questionou como determinados sistemas funcionam e comunicam. Hoje em dia, graças a adopção, como standard, do protocolo IP, os dispositivos conseguem facilmente “comunicar” entre eles de uma forma totalmente transparente para o utilizador.
Mas como é que uma aplicação cliente consegue, por exemplo, comunicar com uma aplicação servidor e vice-versa?
Actualmente existem algumas tecnologias que permitem a comunicação entre máquinas. Uma das tecnologias/mecanismos mais comuns para comunicação entre máquinas é os sockets. Socket é um mecanismo de comunicação, usado normalmente para implementar um modelo cliente/servidor, que permite a troca de mensagens entre os processos de uma máquina/aplicação servidor e de uma máquina/aplicação cliente.
Como funciona o mecanismos de sockets?
Imagine por exemplo que precisa de desenvolver uma aplicação servidor que funcione como uma “sala” de chat. Na prática essa aplicação irá receber ligações dos clientes (num determinado porto) e posteriormente, se um cliente enviar uma mensagem, o servidor envia essa mensagem para todos os outros clientes.
Ou imagine por exemplo que tem instalado um sensor de temperatura numa máquina e uma aplicação servidor que controla esse sensor, dando informações sobre o estado do tempo. A aplicação cliente, poderá ligar-se remotamente à aplicação servidor e obter também essa informação….tudo isto é possível de desenvolver usando sockets,
De uma forma geral, existe uma aplicação que cria um socket servidor e uma outra aplicação que implementa um cliente. Existem principalmente dois tipos de sockets: Socket_Stream (aka TCP) ou SOCK_DGRAM (aka UDP). Os sockets TCP garantem fiabilidade na comunicação (garantia da entrega de pacotes), enquanto os sockets UDP não dão garantia na entrega de pacotes a nível da camada de transporte). Para saber mais sobre os protocolos de transporte TCP e UDP, aconselhamos a lerem o nosso artigo Protocolo TCP vs Protocolo UDP. Depois de estabelecida a ligação entre aplicações/processos, a aplicação cliente passa a poder enviar mensagens para a aplicação servidor (que pode também funcionar como socket cliente) via socket.
Sockets TCP
Sockets, são uma abstracção para endereços de comunicação através dos quais processos comunicam. Cada endereço tem um identificador único composto pelo endereço da máquina e o identificador local da porta usado pelo processo. Este identificador de porta é usado para mapear dados recebido pela máquina para processos (aplicações) específicos. O processo de comunicação no modo orientado à ligação ocorre da seguinte forma: o servidor é colocado num determinado porto e aguarda por ligações a essa porta. O cliente deve saber previamente qual o nome ou IP do servidor e o respectivo porto onde o servidor foi colocado à espera de ligações. Então o cliente solicita uma ligação ao host (servidor)/porto conforme demonstra a figura seguinte.
Se nenhum problema ocorrer, o servidor aceita a ligação gerando um socket num porto vago do lado do servidor, criando assim um canal de comunicação entre o cliente e o servidor. De referir que o porto original fica livre para poder receber outros pedidos de ligação. A figura seguinte demonstra esse mesmo canal de comunicação.
Tipicamente o comportamento do servidor é ficar em loop, aguardando novas ligações e “gerando” sockets para atender as solicitações de clientes. para saberem mais sobre este assunto, aconselhamos a lerem o nosso artigo sobre Como é que o meu MSN comunica com o teu?
Num próximo artigo iremos mostrar, passo a passo, como é feita a comunicação entre aplicações/processos, usando sockets TCP.