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

  1. O cliente e o servidor sempre fecham a conexão depois de completar a transferência da string.
  2. 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

Bibliografia