Ich muss einen einfachen HTTP-Server in C erstellen. Irgendwelche Anleitungen? Links? Proben?
c
httpserver
Nathan H.
quelle
quelle
Antworten:
Ich schlage vor, Sie werfen einen Blick auf winzige httpd . Wenn Sie es von Grund auf neu schreiben möchten, sollten Sie RFC 2616 gründlich lesen . Verwenden Sie BSD-Sockets , um auf einer sehr niedrigen Ebene auf das Netzwerk zuzugreifen.
quelle
tiny httpd
ist auch auf Github hier: github.com/larryhe/tinyhttpdIch würde empfehlen, dass Sie sich Folgendes ansehen: Eine praktische Anleitung zum Schreiben von Clients und Servern
Was Sie in inkrementellen Schritten implementieren müssen, ist:
quelle
Ein HTTP-Server ist konzeptionell einfach:
Es wird schwieriger, je nachdem, wie viel HTTP Sie unterstützen möchten - POST ist etwas komplizierter, Skripte, die Bearbeitung mehrerer Anforderungen usw.
Aber die Basis ist sehr einfach.
quelle
Mungo (ehemals einfacher HTTP-Daemon) ist ziemlich gut. Insbesondere kann es eingebettet und unter Windows, Windows CE und UNIX kompiliert werden.
quelle
Öffnen Sie einen TCP-Socket an Port 80, warten Sie auf neue Verbindungen und implementieren Sie diese . Abhängig von Ihren Zwecken können Sie fast alles ignorieren. Im einfachsten Fall können Sie für jede Anfrage dieselbe Antwort senden, bei der lediglich Text in den Socket geschrieben wird.
quelle
Schauen Sie sich nweb (Nigels Webserver) an, "einen winzigen, sicheren Webserver [...] mit nur 200 Zeilen C-Quellcode":
https://drive.google.com/file/d/0B3msld7qnNOhN1NXaFIwSFU2Mjg/view?usp=sharing
http://www.ibm.com/developerworks/systems/library/es-nweb/Der Artikel enthält Pseudocode, Erklärungen und Kommentare.
BEARBEITEN: IBMs Link ist gestorben. Ich habe ein PDF der Webseite in Google Drive gespeichert. Hier ist der Code-Download:
https://drive.google.com/file/d/0B3msld7qnNOhSGZGdDJJMmY0VHM/view?usp=sharing
@ ankushagarwal hat einige Änderungen vorgenommen und seine Version auf GitHub hochgeladen: https://github.com/ankushagarwal/nweb
quelle
Ich habe meine eigenen geschrieben, die Sie verwenden können. Dieser funktioniert mit SQLite, ist threadsicher und ist in C ++ für UNIX.
Sie sollten in der Lage sein, es auseinander zu nehmen und den C-kompatiblen Code zu verwenden.
http://code.google.com/p/mountain-cms/
quelle
Die HTTP-Spezifikation und Firebug waren für mich sehr nützlich, als ich sie für meine Hausaufgaben machen musste.
Viel Glück mit dir. :) :)
quelle
Ich würde vorschlagen, die Quelle zu etwas wie lighthttpd zu betrachten .
quelle
http://www.manning.com/hethmon/ - "Illustrated Guide to HTTP von Paul S. Hethmon" von Manning ist ein sehr gutes Buch zum Erlernen des HTTP-Protokolls und wird für jemanden, der es implementiert / erweitert, sehr nützlich sein.
quelle
Verwenden Sie plattformspezifische Socket-Funktionen, um das HTTP-Protokoll zu kapseln, genau wie die Leute hinter Apache .
quelle
Es gibt ein Duplikat mit mehr Antworten .
Ein noch nicht genannter Kandidat ist spserver .
quelle