Escolar Documentos
Profissional Documentos
Cultura Documentos
Motivao
Especificao
Neste trabalho, voc dever desenvolver dois programas usando o modelo de operao clienteservidor, no modo requisio-resposta sobre o protocolo TCP e a verso 6 do protocolo IP (IPv6).
O cliente (sua mquina) poder solicitar do servidor (mquina da universidade, mas pode ser a sua
prpria) os arquivos disponveis para download. O cliente tambm poder baixar um arquivo do
servidor, enviando para este o nome do arquivo desejado.
O processo de comunicao entre cliente e servidor dever seguir um padro simples, ilustrado a
seguir. O cliente deve se conectar ao servidor, enviar uma cadeia de caracteres (string) com o
comando desejado e aguardar a resposta.
Descrio do erro
-1
-2
-3
Erro de bind
-4
Erro de listen
-5
Erro de accept
-6
Erro de connect
-7
-8
-9
Erro em ponteiro
-10
-999
O aluno dever acrescentar, se necessrio, outros cdigos de erro, que devero estar
documentados no arquivo README e no cdigo fonte. As mensagens de erro devero ter o seguinte
formato: Erro: %d - Descrio: %s.
2
O servidor dever ser capaz de processar mltiplas conexes simultneas e, portanto, ficar
rodando at que receba um sinal SIGTERM ou SIGKILL.
Para obteno da lista de arquivos sugere-se utilizar as funes da biblioteca dirent.h (voc pode
usar #man 2 opendir para obter mais informaes).
Sockets devem ser utilizados no desenvolvimento do trabalho, utilizando a biblioteca de
sys/sockets.h do Linux. Os programas devero utilizar sockets com IPv6. No sero aceitos
programas somente com IPv4. Os testes sero rodados em um computador com IPv4 desabilitado.
3.
Medies de desempenho
Uma vez que os programas estejam funcionando corretamente, o aluno deve avaliar o desempenho
do funcionamento dos programas. Esta avaliao ser feita mediante a conexo de um nico
cliente ao servidor. No devem ser feitas medies com conexes simultneas de diversos clientes.
O aluno deve medir a taxa de transferncia obtida na transferncia do arquivo entre o cliente e o
servidor, isto , a vazo (throughput) da comunicao, definida como o nmero total de bytes
enviados dividido pelo tempo medido no cliente. As medies devem verificar como a vazo varia
4
com o tamanho de buffer. Devem ser fornecidas, no mnimo, as medies para os casos nos quais o
tamanho do buffer seja igual a 2i bytes, onde 1 i 16, i N. Outros valores podem ser escolhidos
conforme suas observaes indicarem necessidade. Para a medio do tempo no cliente sugere-se
utilizar a funo gettimeofday() da biblioteca sys/time.h.
O tamanho do arquivo pode ser escolhido de forma a garantir um tempo de teste nem muito longo
nem muito curto. Para testes em que os dois programas executam na mesma mquina, um arquivo
de aproximadamente 3 MB pode ser um bom ponto de partida.
4.
Entregveis
O aluno dever entregar um relatrio de medies e o cdigo fonte dos programas na linguagem
C ou C++. A entrega ser eletrnica via Moodle e deve constar de um arquivo .zip, com a mscara
tp1_<nome_do_aluno>_<curso-bcc/eca>.zip (ex: tp1_carlos_roberto_eca.zip).
contendo os
seguintes documentos:
1. todos os arquivos fonte desenvolvidos (arquivos de terminao .c/.cpp, .h e Makefile);
2. um arquivo denominado README, com uma breve descrio do programa e orientao para
compilao e execuo. Deve indicar a necessidade de instalao de alguma biblioteca;
3. uma cpia eletrnica (em .pdf) do relatrio, com, no mximo, 8 pginas.
No incluir nesse conjunto outros arquivos, como por exemplo, arquivos objeto (.o), arquivos de
backups (~* e *~) e os executveis utilizados!
Relatrio de desempenho
O relatrio com os resultados das medies de desempenho dever conter as seguintes sees:
I.
Introduo: descrio do objetivo do trabalho
II. Metodologia: dados sobre os experimentos, como a configurao das mquinas utilizadas e
a localizao das mesmas na rede. Indicar tambm como foram feitas as medies, quantas
vezes o teste foi executado, se foram execues diferentes do programa ou apenas um loop
ao redor do programa todo para fazer todas as n medies de tempo.
III. Resultados: apresentar a informao coletada, tanto na forma de tabelas quando na forma de
grficos. Cada tabela deve conter, para o experimento em questo, uma linha para cada
tamanho de mensagem, com o nmero de mensagens enviadas, o tempo total mdio medido,
o desvio padro dos tempos medidos, o intervalo de confiana para o valor mdio (com
significncia de 95%) e a banda mdia observada no experimento. Cada grfico deve usar
escalas adequadas (logartmicas ou lineares, conforme o caso), os eixos devem ser
identificados e possuir claramente a identificao das unidades em cada um. Os resultados
devem ser apresentados por linhas retas interligando os pontos medidos, que devem ser
destacados com marcas claras. Se um grfico contiver mais do que um conjunto de pontos,
as linhas devem ser claramente identificadas com marcaes, cores e legenda. Se possvel,
cada grfico deve incluir barras verticais indicando a varincia de cada valor calculado.
IV. Anlise: para cada experimento, discutir os resultados observados. Os resultados foram de
acordo com o esperado? Voc capaz de explicar por que as curvas se comportam como o
fazem? Houve algum elemento claramente de destaque nos resultados que merece uma
anlise especial (por exemplo, um pico/vale inesperado nos grficos, desvios muito
significativos nas medies)?
V. Concluso: como todo trabalho tcnico, algumas palavras finais sobre o resultado do
trabalho, tanto das observaes quanto do seu aprendizado sobre o assunto.
O relatrio no deve incluir a listagem dos programas. O relatrio dever ser feito utilizando o
formato padronizado da SBC para publicao de artigos que pode ser obtido em
http://www.sbc.org.br/documentos-da-sbc/category/169-templates-para-artigos-e-capitulos-de-livros.
5.
Critrios de Avaliao
Programa:
Corretude do Makefile;
Corretude da compilao;
Cliente e/ou servidor sem permitir mltiplas conexes no servidor;
Nomeao dos programas;
Formato de entrada da linha de comandos;
Suporte a IPv6;
Corretude no envio de arquivos (se retorna os arquivos diretrio);
Corretude no comando list (se retorna corretamente os arquivos solicitados);
Cdigo de erro incompatvel com a relao fornecida nesta especificao;
Clareza, indentao e comentrios no programa;
Linguagens de programao utilizadas .
a)
b)
c)
d)
Relatrio:
Formato e tamanho;
Aderncia das concluses aos dados apresentados;
Utilizao dos tamanhos de buffer como solicitados;
Clareza e objetividade.
2)
http://packages.ubuntu.com/trusty/devel/build-essential
6