As chamadas a sockets necessárias para construção dos programas cliente e servidor pedidos estão documentadas em Comer e Stevens. Os dois livros estão disponíveis para consulta na Biblioteca da Informática. O capítulo 6 do livro de Stevens encontra-se disponível para cópia no Document Center (pasta Sistemas de Computação II). Apenas as páginas de 258 a 286 são necessárias para o primeiro trabalho.
Deve ser construído um programa C que, dado um nome de máquina, estabeleça uma conexão TCP com a porta 80 dessa máquina (servidor WWW). O programa deve pedir uma URI (uniform resource identifier) ao usuário e requisitar ao servidor o documento em questão. A resposta do servidor deve ser mostrada na tela, sem nenhum processamento.
exemplo:
[oxum:~/projeto/sc2] browserbobo ieponda.inf.puc-rio.br Entre com o URI /~noemi/sc2-97/sc2.html RESPOSTA: - - - aqui viria o "source html retornado pelo servidor" - - -
sugestão: Leia o início do capítulo 6 do Stevens, com a descrição geral de um cliente com conexão, e veja o exemplo de código C dado para o caso de um cliente TCP.
Para uma descrição do protocolo de comunicação HTTP, que o cliente deve usar para se comunicar com o servidor, veja aqui.
Deve ser construído um servidor simples de HTTP, que deve tratar requisições do tipo GET . O servidor deve ser um programa C, seguindo o paradigma de servidor multiprocesso com disparo de processos sob demanda, discutido em sala de aula. O programa deve tentar repetidamente associar-se a alguma porta, até conseguir, e então imprimir na tela o número da porta obtida.
O servidor deve poder ser usado tanto com o cliente desenvolvido na primeira parte do trabalho como com qualquer outro browser, como, por exemplo, o netscape. (Para que um browser qualquer faça acesso a uma porta não padrão basta especificar um endereço do tipo http://blablabla:numeroporta/)
Cada grupo pode definir uma pequena hierarquia de documentos html, incluindo um documento raiz (index.html), por onde o cliente possa navegar ao fazer acessos a esse servidor.
sugestão: Leia o início do capítulo 6 do Stevens, com a descrição geral de um servidor com conexão, e veja o exemplo de código C dado para o caso de um servidor TCP (pag. 284).