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

Exercício 5: Servidor TCP Sequencial com Select

Professora Juliana Freitag Borin

Objetivo: Aprender a programar um servidor TCP sequencial com select para atender várias conexoes "simultaneamente".

Critérios para entrega e correção do exercício:

1. este exercício é individual;

2. O material a ser entregue deve ser enviado em um arquivo .tar.gz para até às 9:59 do dia 10/04/2014. O nome do arquivo deve ser "exercicio5-raXXXXX", onde XXXXX deve ser substituído pelo número do seu RA;

3. o assunto da mensagem deve ser "MC833 - exercício 5";

4- a nota da atividade será 0 ou 1. 1, caso todas as questões estejam respondidas de forma satisfatória E a entrega atenda aos critérios 1, 2 e 3; 0, caso contrário.

Atividades

O programa eco_serv_select_tcp.c, implementa um servidor de eco TCP que consegue conectar mais de um usuário simultaneamente fazendo uso do select.

Passos:
  1. Analise os códigos do programa eco_serv_select_tcp.c e procure nas páginas de manual do Linux, a descrição das funções que não conhecer. Procure também nos códigos a natureza dos parâmetros que deve receber, se for o caso.
  2. Execute o programa eco_serv_select_tcp.c
  3. Tente conectar 10 clientes TCP no servidor de eco. Pode usar telnet> ou outras ferramentas do sistema como nc. Quantos usuários conseguem se conectar ao servidor? Explique como o servidor consegue atender mais de um usuário "simultaneamente".
  4. Compare o código do servidor TCP concorrente que usa fork, da atividade anterior. Quais as principais diferenças entre usar fork e select? Explique sua resposta do ponto de vista da utilização de recursos, escalabilidade e características das aplicações que vão usar esses sockets.
Material a ser entregue:
  1. um único arquivo .pdf contendo o relatório com as respostas às questões.
  2. um único arquivo .pdf contendo o código do servidor eco_serv_select_tcp.c devidamente comentado (Podem ser utilizados os programas a2ps e ps2pdf para gerar o arquivo -- Leia a manpage do a2ps!!! Por padrão a saída é enviada direto para a impressora!!!).
Monitor: Carlos A. Astudillo, email: