Preciso construir um servidor HTTP simples em C. Alguma orientação? Links? Amostras?
Preciso construir um servidor HTTP simples em C. Alguma orientação? Links? Amostras?
Respostas:
Eu sugiro que você dê uma olhada no tiny httpd . Se você quiser escrever a partir do zero, então você vai querer cuidadosamente ler RFC 2616 . Use soquetes BSD para acessar a rede em um nível realmente baixo.
tiny httpd
também está no github aqui: github.com/larryhe/tinyhttpd
Eu recomendo que você dê uma olhada em: Um Guia Prático para Escrever Clientes e Servidores
O que você precisa implementar em etapas incrementais é:
Um servidor HTTP é conceitualmente simples:
Fica mais difícil dependendo de quanto de HTTP você deseja oferecer suporte - POST é um pouco mais complicado, scripts, manipulação de várias solicitações, etc.
Mas a base é muito simples.
Mongoose (anteriormente Simple HTTP Daemon) é muito bom. Em particular, ele pode ser incorporado e compilado no Windows, Windows CE e UNIX.
Veja o nweb (Nigel's Web Server), "um servidor web minúsculo e seguro [...] com apenas 200 linhas de código-fonte C":
https://drive.google.com/file/d/0B3msld7qnNOhN1NXaFIwSFU2Mjg/view?usp=sharing
http://www.ibm.com/developerworks/systems/library/es-nweb/
O artigo inclui pseudocódigo, explicações e comentários.
EDIT: o link da IBM morreu. Salvei um PDF da página da web no Google Drive. Aqui está o download do código:
https://drive.google.com/file/d/0B3msld7qnNOhSGZGdDJJMmY0VHM/view?usp=sharing
@ Ankushagarwal tem feito algumas mudanças e enviou a sua versão no GitHub: https://github.com/ankushagarwal/nweb
Eu escrevi meu próprio para você usar. Este funciona em sqlite, é thread-safe e está em C ++ para UNIX.
Você deve ser capaz de separá-lo e usar o código C compatível.
A especificação HTTP e Firebug foram muito úteis para mim quando tive que fazer isso para o meu dever de casa.
Boa sorte com o seu :)
Eu sugiro olhar a fonte para algo como lighthttpd .
http://www.manning.com/hethmon/ - "Guia Ilustrado para HTTP por Paul S. Hethmon" de Manning é um livro muito bom para aprender o protocolo HTTP e será muito útil para alguém implementá-lo / estendê-lo.
Há uma duplicata com mais respostas .
Um candidato não mencionado ainda é spserver .