Universidade da Beira Interior
Sistemas Paralelos e Distribuídos - 2007/2008 Curso: Matemática /Informática
Sistemas Distribuídos - 2007/2008 Curso: Ensino da Informática
Folha 7 - 1
→ Multithreaded Servers
1 – Implemente o Servidor da data e hora do sistema estudado na aula teórica
(“multithreaded server”).
2 – Modifique o programa anterior de modo a conseguir demonstrar experimentalmente
que o servidor pode servir vários clientes em simultâneo.
3 – Construa uma aplicação cliente – servidor, com comunicação por Sockets TCP, que
permita dois utilizadores manterem uma conversa em que as mensagens devem ser linhas
de texto (Strings) introduzidas através dos respectivos teclados.
A conversa deverá seguir o seguinte protocolo:
. O utilizador do processo servidor é o primeiro a “falar”;
. O utilizador do processo cliente decide quando termina a conversa enviando uma linha de
texto com a palavra fim.
Quando o utilizador do processo cliente termina a conversa, o processo cliente termina,
mas o processo servidor deverá continuar a execução esperando que um novo cliente
estabeleça ligação.
4 - Suponha agora que queremos, exactamente com o mesmo tipo de cliente, transformar o
servidor do exercício anterior num servidor multithreaded que irá criar uma nova Thread
para servir cada um dos clientes que se liga. Vários clientes poderão estar simultaneamente
a comunicar com o mesmo servidor. O servidor não enviará um texto introduzido pelo
teclado mas uma String armazenada num objecto do tipo java.util.Vector que contém um
número à sua escolha de mensagens pré-definidas. Se a conversação for longa a mesma
mensagem pode ser enviadas várias vezes. Cada Thread deverá ter um número de ordem
que será enviado nas mensagens para o cliente.
Paula Prata, Departamento de Informática da UBI
http://www.di.ubi.pt/~pprata/spd.htm
Universidade da Beira Interior
Sistemas Paralelos e Distribuídos - 2007/2008 Curso: Matemática /Informática
Sistemas Distribuídos - 2007/2008 Curso: Ensino da Informática
Folha 7 - 2
5- Modifique agora o exercício anterior de tal forma que, quando o número de threads em
simultâneo chegar às 5, as novas threads que sejam criadas para servir novos clientes
deverão suspender-se, voltando ao estado executável quando houver menos de 5 threads em
execução.
Quando uma thread começa a servir um novo cliente, verifica se há mais de 5 clientes
ligados ao servidor e, nesse caso, antes de se auto-suspender, enviará como primeira
mensagem para o cliente a String: “Estou um pouco ocupado, não quer conversar mais
tarde?”
6 – Construa uma aplicação cliente / servidor em que o servidor receba do cliente dois
arrays de inteiros, calcule a sua soma e devolva o resultado ao cliente. O servidor deverá
poder servir vários clientes simultaneamente. Para isso deverá possuir um conjunto de
Threads definidas à partida (“pool de treads”) as quais estarão à espera de pedidos dos
clientes.
Paula Prata, Departamento de Informática da UBI
http://www.di.ubi.pt/~pprata/spd.htm
Download

FP07 - Departamento de Informática da Universidade da Beira Interior