Trabalho 1 - Sistemas Distribuídos
Data de entrega: 6/4
Descrição
Escrever um programa cliente-servidor em
Lua,
usando a biblioteca
LuaSocket.
O serviço oferecido é o download de uma string de 100K, que pode
ser simplesmente descartado pelo cliente (mas tem que ser completamente lido).
A leitura deve ser feita em chunks de 1K, com confirmação do cliente
a cada chunk.
O programa deve ser escrito em duas versões
-
O cliente e o servidor sempre fecham a conexão depois de completar
a transferência da string.
-
Cliente e servidor mantêm a conexão aberta, e cliente pode requisitar
a string novamente usando a mesma conexão.
A conexão deve ser marcada como {\em ociosa} se não há serviço ativo
sobre ela.
O servidor deve manter uma tabela com 16 posições para conexões abertas.
Caso chegue um pedido e o servidor não tenha mais espaço na tabela,
uma (qualquer) daquelas ociosas.
Caso não exista conexão ociosa para ser descartada, crie uma nova posição
mas descarte-a quando o serviço terminar.
O cliente deve sempre tentar utilizar a conexão já estabelecida,
realizando nova conexão caso a anterior tenha sido fechada.
Realize experimentos para comparar o comportamento das duas implementações.
Escreva um relatório (entregue em pdf, por favor) sobre os experimentos,
contendo os números levantados e alguns comentários sobre eles.
Varie o tamanho do chunk e o número de clientes simultâneos.
Em particular, inclua os casos (1) número de clientes menor do número de posições na
tabela, (2) número de clientes igual a dobro do número de posições na tabela.
Questões de Ordem
-
O trabalho pode ser feito em grupo de dois.
-
O código e relatório devem ser enviados por email para mim na data de entrega.
-
Vou pedir a alguns grupos para me mostrarem seus trabalhos funcionando,
então por favor certifiquem-se de que o trabalho
funciona no labpós ou labgrad.
Bibliografia