Sistemas Distribuídos 4º Ano MIEIC
Trabalho Prático nº 3 Serviço de Tempo com sockets TCP


1  Introdução

Objectivo

Este trabalho prático tem por objectivo principal a consolidação dos conceitos fundamentais requeridos para a programação de aplicações distribuídas directamente sobre protocolos de comunicação. Pretende-se, neste caso, experimentar a interface de programação baseada em sockets com conexão.

2  A aplicação

A aplicação a desenvolver é uma versão da aplicação cliente-servidora descrita no TP1.

Esta versão difere daquela nos seguintes pontos:

Servidor

O programa servidor deverá ser invocado da seguinte maneira:
cnx_date_srv <port_number>
onde
<port_number> é o número do porto local que o servidor deve usar.

O servidor pode usar as funções:

    char *mygetdate(); // para ler as horas;
    char *myadjdate(int delta); // para acertar as horas, somando delta segundos à hora actual;
    
que se encontram definidas no ficheiro mydate.c e cujos protótipos estão declarados em mydate.h.

Estas funções usam a chamada ao sistema gettimeofday() e são extremamente simples. Podem dar uma vista de olhos por este ficheiro, bem como pelas man pages de gettimeofday() e ctime().

Cliente

O programa cliente deverá ser invocado da seguinte maneira:
java CnxDateClient <host_name> <port_number>
onde
<host_name> é o nome DNS do computador onde executa o servidor;
<port_number> é o número do porto do servidor.
O processo cliente deverá criar um socket e executar um ciclo infinito no qual:
  1. Envia uma mensagem por segundo.
  2. Por cada 3 mensagens GETTIME deve enviar uma mensagem ADJTIME com um valor à vossa escolha.
Após submeter um pedido, o cliente fica à espera até receber uma resposta.

Linguagem de Programação

Como mencionado acima, o cliente deverá ser desenvolvido em Java e o servidor em C.

Construção

Deverá escrever uma makefile que permitindo construir o cliente e o servidor como indicado a seguir:
        make CnxDateClient
        make cnx_date_srv
 

Teste

Como acontece no TP1, os clientes e o servidor deverão imprimir na consola mensagens descrevendo a sua actividade.

3  Para Pensar

O que acontece se mais do que um cliente tentar comunicar com o servidor? Como poderia o servidor atender vários clientes simultaneamente? Se estiver interessado e tiver tempo, tente implementar uma solução.


This document was translated from LATEX by HEVEA.