Este é um pequeno servidor da Web escrito em C que suporta um subconjunto das especificações HTTP 1.0. O servidor;
• Deve ser capaz de lidar com solicitações simultâneas
• Implementar os métodos HTTP Get and Head
• Lidar e responder a solicitações inválidas.
Você deve demonstrar que seu servidor da Web é capaz de entregar sua página inicial em um navegador da Web. Você deve implementar a versão 1.0 do HTTP, conforme definido na RFC 1945, onde solicitações HTTP separadas são enviadas para cada componente da página da web. O servidor poderá lidar com várias solicitações de serviço simultâneas em paralelo. Isso significa que o servidor da Web é multi-thread. No tópico principal, o servidor ouve uma porta fixa. Quando recebe uma solicitação de conexão TCP, ele configura uma conexão TCP através de outra porta e atende a solicitação em um thread separado.
Para simplificar essa tarefa de programação, desenvolveremos o código em duas etapas. Na primeira etapa, você pode escrever um servidor multithread que simplesmente exibe o conteúdo da mensagem de solicitação HTTP que ele recebe. Depois que este programa estiver em execução corretamente, você pode adicionar o código necessário para gerar uma resposta apropriada.
Ao desenvolver o código, você pode testar seu servidor a partir de um navegador da Web, como o navegador Chrome, Safari e Firefox como aplicativo cliente HTTP. Mas lembre -se de que você não está servindo através da porta padrão 80, portanto, precisa especificar o número da porta no URL que você fornece ao seu navegador. Por exemplo, se o nome da sua máquina for testhost.myDomain.com seu servidor está ouvindo a porta 6789 e você deseja recuperar o arquivo index.html, especificaria o seguinte URL dentro do navegador: http: // testhost.mydomain.com:6789/index.html
Se você omitir ": 6789", o navegador assumirá a porta 80, que provavelmente não terá um servidor ouvindo nela.
Quando o servidor encontra um erro, ele envia uma mensagem de resposta com a fonte HTML apropriada para que as informações de erro sejam exibidas na janela do navegador.
Requisitos gerais:
• A biblioteca POSIX (PTHREAD) será usada.
• O servidor recebe muitas solicitações, mas pode retornar apenas 10 solicitações. Mais de 10 pedidos são recusados. Nesse estado, o servidor retorna uma mensagem de "servidor está ocupada"
• O servidor aceita as solicitações que serão arquivos HTML e JPEG. Os outros tipos não aceitarão