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

Projeto Final: Aplicação Cliente-Servidor usando comunicação por sockets com cliente móvel

Professora Juliana Freitag Borin

Observações sobre o trabalho a ser desenvolvido:

  1. este trabalho pode ser feito em dupla; não compartilhe código ou revise código de ninguém; no entanto, você poderá re-utilizar parte do seu código de atividades passadas ou do seu projeto 1, se precisar.
  2. o material a ser entregue deve ser enviado em um arquivo .tar.gz, .zip ou .rar para até às 23:59 do dia 25/06/2014. O nome do arquivo deve ser "trabalho2-raXXXXX-raYYYYY", onde XXXXX e YYYYY devem ser substituídos pelos números dos RAs da dupla;
  3. o trabalho receberá uma nota de 0 a 10, sendo 40% da nota dada pelo código, 40% da nota dada pelo relatório e 20% dada pela aplicabilidade do serviço desenvolvido.
  4. casos de fraude resultarão em 0 na disciplina para todos os envolvidos.

Descrição do Trabalho

Neste trabalho você desempenhará duas funções, a de cliente e a de desenvolvedor. Como cliente, você definirá qual será o serviço que o desenvolvedor deve implementar. Alguns requisitos que você, como cliente, deve incluir na sua lista de requisitos (baseados no conceitos vistos na disciplina) estão citados abaixo. Já como desenvolvedor, você terá que atender esses requisitos definidos pelo cliente.
  1. O serviço deve ser baseado no modelo cliente-servidor.
  2. A linguagem de programação usada para desenvolver o servidor deve ser C.
  3. O servidor deve aceitar conexões através da porta 10000 tanto para o protocolo TCP como para UDP.
  4. O cliente do serviço deve ser desenvolvido para a plataforma Android da Google.
  5. A comunicação entre os clientes e o servidor deve ser baseada em sockets.
  6. O servidor deve ser dual-protocol. Ou seja, deve aceitar tanto conexões TCP como UDP simultaneamente (em um mesmo código). Para isto, você pode usar a abordagem usada na solução do exercício 7.
  7. Deve-se permitir comunicação entre os clientes do serviço, através do servidor ou com a sua coordenação. Independente da aplicação que você propuser, este requisito deve ser incluído como parte do serviço.
  8. O servidor deve poder ser executado através da linha de comandos, com um dos parâmetro sendo o número da porta, e um comando opcional -v que, quando especificado, mostrará na saída padrão, em tempo real, informações tais como endereços IP e portas dos clientes quando conectarem, mensagens recebidas pelos clientes, mensagens enviadas pelo servidor e os endereços IP e portas da origem e destino das mensagens, etc.
    castudillo@prometeu:~$ ./servidor -v -p 10000
  9. O cliente Android deve usar a classe android.util.log e chamar os métodos necessários em todas as funções que precisarem de debug, tratamento de erros ou alertas ( p. ex. funções de estabelecimento de conexão, envio de dados, etc.).

Outras considerações

  1. A forma de armazenamento das informações referentes a sua aplicação fica a sua escolha.
  2. Autenticação dos usuários não é necessária.
  3. Pode-se considerar a possibilidade de comunicação entre clientes diretamente sem intervenção do servidor.

Medidas de desempenho do seu serviço

Você deve definir e realizar um conjunto de testes para análise do desempenho do seu serviço em diferentes cenários. A escolha dos testes é aberta. No mínimo, seu conjunto de testes deve incluir o tempo de resposta de duas funcionalidades da sua aplicação usando tanto TCP como UDP.

O relatório deverá conter:
  1. Introdução
  2. Explicação detalhada do serviço proposto, com justificativa da sua escolha (porque é interessante, qual sua aplicabilidade, etc.).
  3. Requisitos do sistema desenvolvido.
  4. Casos de uso do sistema.
  5. Detalhes da implementação tanto do lado cliente como do lado servidor. Descrição das ferramentas utilizadas, suposições feitas, conceitos aplicados e justificativa par as decisões tomadas na implementação. Forma de armazenamento dos dados e sua estrutura.
  6. Análise do desempenho do serviço proposto.
  7. Vantagens/desvantagens de usar um servidor dual-protocol (suporte à conexões TCP e UDP no mesmo código).
  8. Conclusão.
Material a ser entregue:
  1. Os códigos do seu servidor e cliente, devidamente comentados.
  2. Um arquivo .pdf com os códigos desenvolvidos.
  3. Um arquivo .pdf com o relatório do trabalho.

**A formalização da entrega dos trabalhos será feita através de uma apresentação do serviço em operação no laboratório com a participação de todos os integrantes da equipe na aula do dia 26/06/2014**.

Monitor: Carlos A. Astudillo, email: