Come dice il titolo, vorrei scrivere un server HTTP. La mia domanda è questa, come posso fare? So che sembra MOLTO generale e troppo "di alto livello", ma c'è un metodo per la mia follia. Una risposta a questa domanda dovrebbe essere, credo, linguaggio agnostico; vale a dire, indipendentemente dal linguaggio che uso (ad esempio, C, C ++, Java, ecc.) la risposta dovrebbe essere la stessa. Ho un'idea generale di come dovrebbe funzionare:
- Aprire un socket sulla porta 80.
- Attendere che un client faccia una richiesta.
- Leggi la richiesta (ovvero, questa persona desidera 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 sono sicuro al 100%. Questo mi porta al cuore della mia domanda. Come o dove una persona scopre queste informazioni?
E 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 i passaggi / processi esatti necessari per creare un server HTTP funzionante?
Un collega mi ha parlato dell'intestazione html, quindi non avrei MAI saputo questo senza di lui. Ha anche detto qualcosa sul passare ogni richiesta a un nuovo thread. C'è qualche grande libro su come funzionano le cose? Esiste un manuale di ciò che serve per essere un server HTTP?
Ho provato a cercare su google "come funziona un server HTTP", ma le uniche risposte che ho trovato sono state orientate verso il tuo Joe medio e non verso una persona che voleva programmare un server HTTP.