Atualizado em 04/12/2008
Prova de avaliação: 17 Nov 08 21Hs Sala CB18
O objetivo principal desta disciplina é familiarizar os alunos com conceitos básicos de programação de aplicações Cliente-Servidor utilizando a biblioteca "Berkeley Sockets" com a linguagem C e usando os protocolos TCP e UDP. Isto permite explorar recursos poderosos da biblioteca não disponíveis em outras linguagens.
Será tomado como modelo de aplicação o exemplo do "Serviço de Eco" adotado pelo livro clássico de Richard Stevens (veja bibliografia a seguir). Nesta aplicação as linhas de um arquivo texto (possivelmente grande) são sucessivamente enviadas do cliente para um servidor remoto que simplesmente envia de volta ao cliente cada linha recebida; diferentes técnicas para implementar esta aplicação são detalhadas, e os alunos implementarão várias delas como atividades de laboratório; as técnicas mais sofisticadas conseguem um desempenho de 1 a 2 ordens de magnitude melhor do que a técnica simples de "Pedido-Resposta"(*).
Documentos adicionais diversos.
Veja em particular o documento sobre buferização da biblioteca padrão.
Lista de sinais
suporatdos por Linux.
Um exemplo de programa que não se deixa matar
pelo sinal SIGINT (emitido ao se digitar ^C).
Funções para tratar cadeias de caracteres:
C string functions
Uma rápida introdução a scripts CGI em C
Atividade 1 (opcional): Serviço de Eco simplificado:
a1.html Submissão: 25/08/08. Prazo de entrega: 01/09/08
Atividade 2(obrigatória): Serviço de Eco TCP:
a2.html Submissão: 27/08/08. Prazo de entrega: 15/09/08
Atividade 3(obrigatória): Serviço de Eco UDP:
a3.html Submissão: 04/09/08. Prazo de entrega: 29/09/08
Obs: veja "dicas" sobre como "desconectar" o servidor do cliente nas notas de aula e no final
da especificação (a3.html)
Atividade 4 (obrigatória): Serviço de Eco usando E/S multiplexada:
a4.html Submissão: 24/09/08. Prazo de entrega: 13/10/08
Atividade 5(obrigatória): Emulador do servidor inetd: a5.html Submissão: 01/10/08. Prazo de entrega: 27/10/08 Obs: esta atividade terá um peso maior que as anteriores
Atividade 6(obrigatória): Emulador de um browser via script CGI:
a6.html Submissão: 04/11/08. Prazo de entrega: 24/11/08
Obs: esta atividade terá um peso maior que as anteriores