MC833 - Programação em Redes de Computadores - 1s 2014

Trabalho 1: Servidor de Informação Baseado em Localização com Socket TCP e UDP

Professora Juliana Freitag Borin

Observações sobre o trabalho a ser desenvolvido:

  1. este trabalho pode ser feito em dupla;
  2. o material a ser entregue deve ser enviado em um arquivo .tar.gz para até às 23:59 do dia 24/04/2014. O nome do arquivo deve ser "trabalho1-raXXXXX-raYYYYY", onde XXXXX e YYYYY devem ser substituídos pelos números do RAs da dupla;
  3. o assunto da mensagem deve ser "MC833 - Trabalho 1".
  4. o trabalho receberá uma nota de 0 a 10, sendo 50% da nota dada pelo código e 50% da nota dada pelo relatório.
  5. casos de fraude resultarão em 0 na disciplina para todos os envolvidos.

Descrição do Trabalho

Usando a linguagem C, escreva uma aplicação cliente/servidor de informação baseado em localização que atenda os requisitos descritos a seguir. Você deve desenvolver um servidor concorrente TCP e um servidor iterativo UDP para esse serviço e comparar seus desempenhos.

Seus servidores devem aceitar as mensagens através de uma porta bem conhecida ou reservada.
Os servidores devem poder ser executados através da linha de comandos, com o primeiro parâmetro sendo o número da porta, da seguinte forma:
%
castudillo@prometeu:~$ ./servidor_info_tcp porta
Os clientes devem poder ser executados através da linha de comandos, com o primeiro parâmetro sendo o endereço IP do servidor e o segundo parâmetro sendo o número da porta do servidor, da seguinte forma:
%
castudillo@prometeu:~$ ./cliente_info_tcp ip porta
Não é necessário fazer autenticação dos clientes. Quando um cliente se conecta, ele deve informar sua localização enviando uma mensagem como a do exemplo abaixo:
Position X,Y
O formato fica a seu critério, você pode deixar espaços entre as coordenadas ou definir outro formato para enviar essa informação para o servidor. Essa mensagem pode ser enviada a qualquer momento e várias vezes pelo cliente. Se a localização do cliente for 0 < x < 1000 e 0 < y < 1000, o cliente encontra-se dentro da área de cobertura do serviço.
Se a localização informada pelo cliente estiver fora da área de cobertura do serviço, o servidor deve retornar um erro informando este fato.
ERRO: fora da área de cobertura do serviço
O servidor deve suportar as seguintes operações realizadas por um usuário:
  1. Listar todos os estabelecimentos, com seus respectivos IDs, localizados na área de cobertura do serviço e registrados no servidor.
  2. Listar todos os estabelecimentos e seus respectivos IDs em um raio de 100 metros a partir da localização do cliente.
  3. Dada uma categoria de estabelecimento (p. ex. Café, Restaurante, Banco, etc.), listar os estabelecimentos que satisfazem essa categoria e seus IDs em um raio de 100 metros a partir da localização do cliente.
  4. Dado o identificador de um estabelecimento, mostrar todas as informações do local.
  5. Dar pontuação para um estabelecimento.
A forma de armazenamento das informações referentes aos estabelecimentos, suas coordenadas e ranking fica a sua escolha. Você pode usar arquivos, banco de dados ou outra forma de sua preferência. Também pode usar qualquer tipo de estrutura para representar as informações (p. ex. structs, etc.).

Funcionalidades Extras:
  1. Mostrar todos os endereços IPs dos usuários e sua localização dentro de um raio de 100 metros a partir da localização do cliente.
  2. Enviar mensagens de um cliente para outro cliente através do servidor.

Requisitos específicos de comparação entre o servidor TCP e UDP

  1. Medir e comparar o tempo total para uma consulta (desde o momento da execução, até a obtenção da resposta).
  2. Comparar o tamanho do código.
  3. Comparar confiabilidade.
  4. Comparar nível de abstração
O relatório deve conter (no mínimo) as seguintes seções:
  1. Introdução
  2. Casos de uso do sistema e detalhes da sua implementação.
  3. Armazenamento e estrutura dos dados do servidor.
  4. Detalhes da implementação do servidor UDP e TCP. Descrever ferramentas utilizadas, suposições feitas, conceitos aplicados e justificar as decisões tomadas na implementação.
  5. Gráfico com o tempo de consulta em um cenário LAN (cenário WAN opcional).
  6. Comparação (vantagens/desvantagens) entre TCP e UDP.
  7. Conclusão.
Material a ser entregue:
  1. Os códigos do servidor e do cliente na linguagem C, devidamente comentados.
  2. Um arquivo .pdf com os códigos desenvolvidos.
  3. Um arquivo .pdf com o relatório do trabalho.
Monitor: Carlos A. Astudillo, email: