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:
- Deverá usar comunicação baseada em conexão.
- O servidor deverá ser implementado em C e o cliente em Java.
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:
-
Envia uma mensagem por segundo.
- 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.