Neste trabalho iremos continuar explorando a implementação de uma aplicação rodando sobre TCP através da programação com sockets. Este trabalho tem a finalidade de trazer o conhecimento de programação e funcionamento básico do protocolo TCP, principalmente demonstrando os serviços que o TCP fornece para a camada de aplicação. Baseado no primeiro trabalho, mas agora transformando o anterior em um Servidor HTTP simplificado.
É obrigatório que este trabalho use o trabalho anterior como base.
Usar Sockets TCP Multi-thread
Servidor
No Servidor (Nesta Fase não é necessário implementar o cliente, pois será usado um Browser como cliente.)
Receber requisições do Cliente
Tratar corretamente as requisições HTMP e fazer o esperado.
O Browser deve funcionar apresentando o arquivo requisitado na
URL
O Browser deve mostrar ao menos arquivos
HTML + JPEG
O Browser deve interpretar ERROS.
Ex.: Resposta com 404.
Roteiro para Vídeo de Apresentação
No inicio do vídeo deve mostrar todos os itens obrigatórios funcionando no programa.
Na segunda parte do vídeo deve ser explicado cada item como foi implementado no código (Comentando o código).
Itens Obrigatórios a Demonstrar e Explicar no código:
Multithreading:
O servidor tratando pelo menos duas (abas) paginas WEB simultaneamente.
Transferência de Arquivo:
O Browser deve mostrar arquivos
HTML + JPEG
Tratamento de Erro:
O Browser deve interpretar ERROS.
Ex.: Resposta com 404.
É importante quando explicar o código, explicar as alterações feitas em relação ao trabalho anterior.
O aluno deve:
colocar no Classroom um arquivo .ZIP com todo o código,
enviar como mensagem (Comentários particulares) o link do vídeo
Lembre-se: O vídeo deve ser uma demonstração prática, complementada por explicações claras sobre o funcionamento e as decisões de projeto.
O vídeo deve ser anexado como link nos comentários da entrega dentro da atividade do classroom.
NÃO deve ser enviado o arquivo do video!
Veja o exemplo de uma página
HTML simples:
<HTML>
<HEAD>
<TITLE>Título da página</TITLE>
</HEAD>
<BODY>
Conteúdo da página
</BODY>
</HTML>
Requisições HTTP
Veja o exemplo de uma requisição HTTP simples:
GET /pagina.html HTTP/1.0
Host: www.UTFPR.edu.br
Accept: text/plain; text/html
Accept-Language: en-gb
Connection: Keep-Alive
Host: localhost
Referer: http://localhost/ch8/SendDetails.htm
User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)
Content-Length: 33
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Resposta HTTP:
HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Date: Mon, 3 Jan 2016 17:13:34 GMT
Content-Type: text/html
Last-Modified: Mon, 11 Jan 2016 17:24:42 GMT
Content-Length: 112
<html>
<head>
<title>Exemplo de resposta HTTP </title>
</head>
<body>
Acesso não autorizado!
</body>
</html>