Come dice il titolo, vorrei scrivere un server HTTP. La mia domanda è questa, come faccio a fare questo? So che questo suona MOLTO generale e troppo "di alto livello", ma c'è un metodo per la mia follia. Una risposta a questa domanda dovrebbe essere, credo, agnostica del linguaggio; nel senso, a prescindere dalla lingua che uso (ad es. C, C ++, Java, ecc.) la risposta dovrebbe essere la stessa. Ho un'idea generale di come dovrebbe funzionare:
- Apri un socket sulla porta 80.
- Attendi che un cliente faccia una richiesta.
- Leggi la richiesta (ad esempio, questa persona vuole la pagina "contact-us.html").
- Trova e leggi "contact-us.html".
- Invia un'intestazione HTML, quindi invia il contenuto di "contact-us.html"
- Fatto
Come ho detto, credo che questo sia il processo, ma non ne sono sicuro al 100%. Questo mi porta al cuore della mia domanda. Come o dove una persona scopre queste informazioni?
Che cosa succede se non volessi scrivere solo un server HTTP, e se volessi scrivere un server FTP, un server di chat, un visualizzatore di immagini, ecc.? In che modo una persona scopre gli esatti passaggi / processi necessari per creare un server HTTP funzionante?
Un collega mi ha parlato dell'intestazione HTML, quindi non l'avrei mai saputo senza di lui. Ha anche detto qualcosa sulla consegna di ogni richiesta a un nuovo thread. C'è un grande libro su come funzionano le cose? C'è qualche manuale di ciò che serve per essere un server HTTP?
Ho provato googling "come funziona un server HTTP", ma le uniche risposte che ho trovato erano orientate verso il tuo Joe medio, e non verso una persona che desidera programmare un server HTTP.