Programação de Sockets em Java

Este artigo apresenta os conceitos da computação distribuída e nos fornece os passos a serem seguidos para a utilização de sockets na tecnologia Java, tornando possível a implementação de aplicações Java que necessitem se comunicar de forma acop

De que se trata o artigo: Este artigo apresenta os conceitos da computação distribuída e nos fornece os passos a serem seguidos para a utilização de sockets na tecnologia Java, tornando possível a implementação de aplicações Java que necessitem se comunicar de forma acoplada, trabalhando em conjunto para a execução de operações a partir da troca de mensagens de diferentes tipos de dados.

Para que serve: Este artigo foi criado com o objetivo de introduzir os desenvolvedores à tecnologia de sockets, possibilitando incorporar comunicação e troca de informações em aplicações Java de maneira fácil e produtiva. Apesar de ser um artigo introdutório, aborda-se os principais assuntos sobre a implementação de aplicativos em ambientes distribuídos.

Em que situação o tema é útil: Este artigo será útil para os desenvolvedores que desejam aprender como implementar aplicações Java que, por meio de uma arquitetura distribuída, possam trabalhar de modo cooperativo, dividindo processos e tarefas, trocando informações entre si por meio de mensagens e descentralizando operações.

Resumo DevMan: A tecnologia Java nos fornece mecanismos para o desenvolvimento de aplicações distribuídas, permitindo a criação de aplicativos que se comuniquem e troquem os mais diversos tipos de informações, facilitando a execução de tarefas em diversas máquinas, descentralizando operações e processos.

Para a implementação de ambientes distribuídos, é possível utilizar dois modos de transmissão de dados: baseado em conexões e sem conexões. O primeiro modo (com conexões) é muito utilizado quando se deve estabelecer uma conexão, garantindo a entrega e a ordem das informações transmitidas, enquanto o segundo modo (sem conexões) é mais empregado em aplicativos onde não há a necessidade de garantir a entrega e a sequência dos dados transmitidos.

Utilizando-se classes e interfaces presentes no pacote java.net, desenvolvedores Java possuem as ferramentas necessárias para a implementação de aplicativos que executam processos junto a uma rede de computadores, permitindo a troca de informações por diversos protocolos como TCP e UDP.

Atualmente, a programação em redes de computadores tem se tornado uma regra, deixando de ser apenas uma tecnologia presente em poucos sistemas, mas que vem ganhando espaço nos mais diversos tipos de aplicações. A principal vantagem nesse modelo de programação é a capacidade, física e lógica, de distribuir operações computacionalmente pesadas e grandes quantidades de dados e informações entre diversas máquinas que, trabalhando em conjunto, ocasionam a descentralização de tarefas.

O modelo de programação distribuída, realizada através da separação de aplicações entre servidores (aplicações que fornecem serviços a serem consumidos) e clientes (aplicações que consomem serviços disponibilizados por outras máquinas), foi a principal arquitetura de distribuição nos anos de 1990. Por meio desta arquitetura, houve aumento na confiabilidade e redução de custos. A confiabilidade tornou-se um fator importante nesta arquitetura, pois, mesmo havendo falha durante um processo em uma determinada máquina, o sistema não se inviabilizava como um todo, e com a utilização de máquinas mais simples executando serviços isoladamente, houve uma grande diminuição nos custos para execução de operações por máquinas mais poderosas.

Os aplicativos de servidor e cliente são programas que, executados em diferentes máquinas, trocam informações por meio de redes de computadores. A aplicação cliente é capaz de realizar requisições de serviços que são providos pela aplicação servidora. Para isso, o consumidor (ou cliente) deve conhecer o fornecedor dos serviços (ou servidor) a partir de um endereço além de ter conhecimento sobre o protocolo pré-estabelecido utilizado para realizar a solicitação.

No entanto, pelo fato de haver a necessidade de trocas de mensagens entre as máquinas envolvidas no processo, há um custo e tempo adicional para efetivar essa troca.

Outra característica importante é que os dispositivos envolvidos na troca de mensagens devem utilizar a mesma linguagem ou protocolo. Em uma rede de computadores há diversos protocolos, organizando regras sobre o modo como são realizadas as comunicações entre as partes envolvidas em uma comunicação. Um dos principais conjuntos de protocolos na programação de redes de computadores é estabelecido pela arquitetura TCP/IP, operando por meio de um software oferecido pelo sistema operacional a partir de uma máquina ligada na rede.

A tecnologia Java suporta a troca de bytes entre um cliente e um servidor TCP através do estabelecimento de uma conexão entre eles. Pode-se entender uma conexão como uma ligação direta realizada entre dois processos, na qual dados podem fluir nos dois sentidos.

Para estabelecer uma conexão TCP, as extremidades das máquinas envolvidas nos processos de servidor e cliente devem ser identificadas. As extremidades dessa conexão são denominadas de sockets ou soquetes, identificados por um endereço de rede e um número de porta.

Neste artigo, você irá aprender os conceitos de computação distribuída por meio de sockets utilizando a tecnologia Java, bem como aplicar todo o conhecimento adquirido, facilitando assim o desenvolvimento e comunicação de aplicações cliente-servidor.

O que são sockets?

Socket ou soquete é apenas um conceito ou uma abstração. O termo socket é utilizado para representar um ponto de conexão para uma rede de computadores que utiliza o protocolo TCP/IP. Quando dois computadores necessitam manter uma comunicação, cada um deles utiliza um socket. Um computador, denominado server ou servidor, disponibiliza um socket e aguarda o recebimento de uma solicitação de conexão, enquanto outro computador, denominado client ou cliente, executa um socket para se comunicar à máquina servidora, conforme demonstrado na Figura 1. Para estabelecer uma nova conexão, é necessário apenas um endereço de destino e um número de porta.

Figura 1. Socket de servidor aguardando conexões.

Caso não ocorra nenhum problema, o servidor aceita a conexão gerando um novo socket em uma porta qualquer do seu lado, criando assim um canal de comunicação entre o cliente e o servidor. A Figura 2 demonstra esse canal de comunicação."

[...] continue lendo...
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados