Labs SD >

Sockets

Antes de começar vamos relembrar as ferramentas que vão ser usadas e que foram apresentadas no laboratório anterior:

Mais explicação e exemplos podem ser consultados na página das ferramentas.

Passemos agora ao tema principal do laboratório: a comunicação com Sockets.


Sockets

Um Berkeley Socket, ou simplesmente Socket é uma extremidade de uma ligação através de uma rede de computadores. Atualmente, a comunicação entre computadores faz-se quase sempre com IP (Internet Protocol). Os sockets mais comuns usam TCP (Transmission Control Protocol), que estabelecem uma ligação entre cliente e servidor. Um endereço de socket é composto por um endereço IP e por um número de porto.

O Java disponibiliza uma biblioteca de sockets que está disponível no pacote java.net. O exemplo seguinte - servidor e cliente - ilustra a comunicação entre dois programas usando esta biblioteca.

O Socket define uma interface de programação, mas não define o conteúdo e significado das mensagens. Um protocolo de comunicação é um sistema de regras que define uma convenção para permitir que diferentes entidades troquem informação de forma não ambígua. Estas regras são mais evidentes, por exemplo, quando estamos perante uma conversa de walkie talkies: podemos ouvir os interlocutores a usar deixas como "Escuto" para indicar que pararam de falar.



Assim tem que ser na comunicação em sockets. É preciso "dizer" como é enviado um pedido, quando termina o pedido, quando chega a resposta, quando já foi recebida, e assim por diante.

Os sockets estão na base da programação da comunicação na World Wide Web (WWW). O porto 80 é reservado para comunicação por TCP/IP entre o cliente e o servidor, seguindo o protocolo HTTP (HyperText Transfer Protocol).

 


Exercício a resolver até ao fim da aula

  1. Obter o exemplo de sockets TCP/IP.
    Neste caso temos dois programas que colaboram entre si.
    1. Configurar os projectos no Eclipse
    2. Estudar o código fonte e os ficheiros pom.xml do servidor e do cliente.
    3. Compilar e executar o servidor e cliente, seguindo as instruções no ficheiro readme.txt

Problemas? Observar atentamente as exceções produzidas.

  1. Analisar o output do Maven, em especial as linhas começadas por [WARNING]:
    1. Qual foi a causa da exceção?
    2. Que exceção é que foi lançada?
    3. Em que linha do código do cliente é que foi lançada a exceção?
      • Ou será um problema na configuração dos argumentos?
  1. Compilar e executar o servidor até funcionar sem erros.

Problema resolvido? Sim ou Não? :)
Retomar o exercício:

  1. Modificar os programas para que o servidor responda ao cliente com uma mensagem de confirmação.
  2. ... o resto do enunciado será entregue no início da aula.

 

Entrega da solução

A solução do exercício desta aula não conta para a avaliação, mas deverá ser entregue da forma descrita abaixo.

Fénix, Avaliação, Projetos, mini Exercício 0

A solução completa deverá ser submetida no Fénix antes do fim da sua aula de laboratório.
Trabalhos submetidos depois da hora de fim da aula não serão considerados.

Ter atenção ao seguinte:

 


© Docentes de Sistemas Distribuídos, Dep. Eng. Informática, Técnico Lisboa