Ho bisogno di costruire un semplice server HTTP in C. Qualche consiglio? Link? Campioni?
Ho bisogno di costruire un semplice server HTTP in C. Qualche consiglio? Link? Campioni?
Risposte:
Ti suggerisco di dare un'occhiata a tiny httpd . Se vuoi scriverlo da zero, allora ti consigliamo di leggere completamente RFC 2616 . Usa i socket BSD per accedere alla rete a un livello molto basso.
tiny httpd
è anche su GitHub qui: github.com/larryhe/tinyhttpd
Ti consiglio di dare un'occhiata a: Una guida pratica alla scrittura di client e server
Quello che devi implementare in passaggi incrementali è:
Un server HTTP è concettualmente semplice:
Diventa più difficile a seconda della quantità di HTTP che si desidera supportare: POST è un po 'più complicato, script, gestione di più richieste, ecc.
Ma la base è molto semplice.
Mongoose (Formerly Simple HTTP Daemon) è abbastanza buono. In particolare, è incorporabile e si compila sotto Windows, Windows CE e UNIX.
Aprire un socket TCP sulla porta 80, iniziare ad ascoltare per le nuove connessioni, implementare questo . A seconda dei tuoi scopi, puoi ignorare quasi tutto. Nel modo più semplice, puoi inviare la stessa risposta per ogni richiesta, che implica solo la scrittura di testo nel socket.
Guarda nweb (Nigel's Web Server), "un minuscolo, server web sicuro [...] con solo 200 righe di codice sorgente C":
https://drive.google.com/file/d/0B3msld7qnNOhN1NXaFIwSFU2Mjg/view?usp=sharing
http://www.ibm.com/developerworks/systems/library/es-nweb/
L'articolo include pseudocodice, spiegazioni e commenti.
EDIT: il collegamento di IBM è morto. Ho salvato un PDF della pagina web su Google Drive. Ecco il codice da scaricare:
https://drive.google.com/file/d/0B3msld7qnNOhSGZGdDJJMmY0VHM/view?usp=sharing
@ ankushagarwal ha apportato alcune modifiche e caricato la sua versione su GitHub: https://github.com/ankushagarwal/nweb
Ho scritto il mio che puoi usare. Questo funziona con sqlite, è thread-safe ed è in C ++ per UNIX.
Dovresti essere in grado di separarlo e utilizzare il codice compatibile C.
Le specifiche HTTP e Firebug mi sono state molto utili quando dovevo farlo per i miei compiti.
Buona fortuna con la tua. :)
Suggerirei di guardare la fonte a qualcosa come lighthttpd .
http://www.manning.com/hethmon/ - "Guida illustrata a HTTP di Paul S. Hethmon" di Manning è un ottimo libro per imparare il protocollo HTTP e sarà molto utile a chi lo implementa / lo estende.
C'è un duplicato con più risposte .
Un candidato non ancora menzionato è spserver .