Muszę zbudować prosty serwer HTTP w C. Jakieś wskazówki? Spinki do mankietów? Próbki?
Muszę zbudować prosty serwer HTTP w C. Jakieś wskazówki? Spinki do mankietów? Próbki?
Odpowiedzi:
Proponuję przyjrzeć się małemu httpd . Jeśli chcesz napisać go od zera, powinieneś dokładnie przeczytać RFC 2616 . Użyj gniazd BSD, aby uzyskać dostęp do sieci na naprawdę niskim poziomie.
tiny httpd
jest również na github tutaj: github.com/larryhe/tinyhttpd
Polecam zapoznać się z: Praktycznym przewodnikiem po pisaniu klientów i serwerów
To, co musisz wdrożyć w krokach przyrostowych, to:
Serwer HTTP jest koncepcyjnie prosty:
Staje się trudniejsze w zależności od tego, ile HTTP chcesz obsługiwać - POST jest nieco bardziej skomplikowany, skrypty, obsługa wielu żądań itp.
Ale podstawa jest bardzo prosta.
Mongoose (dawniej Simple HTTP Daemon) jest całkiem niezły. W szczególności można go osadzać i kompilować pod Windows, Windows CE i UNIX.
Spójrz na nweb (serwer WWW Nigela), „mały, bezpieczny serwer sieciowy [...] z zaledwie 200 wierszami kodu źródłowego w języku C”:
https://drive.google.com/file/d/0B3msld7qnNOhN1NXaFIwSFU2Mjg/view?usp=sharing
http://www.ibm.com/developerworks/systems/library/es-nweb/
Artykuł zawiera pseudokod, wyjaśnienia i komentarze.
EDYCJA: łącze IBM nie działa. Zapisałem plik PDF strony internetowej na Dysku Google. Oto kod do pobrania:
https://drive.google.com/file/d/0B3msld7qnNOhSGZGdDJJMmY0VHM/view?usp=sharing
@ ankushagarwal wprowadził kilka zmian i przesłał swoją wersję na GitHub: https://github.com/ankushagarwal/nweb
Napisałem własny, z którego możesz skorzystać. Ten działa z sqlite, jest bezpieczny dla wątków i jest w C ++ dla UNIX.
Powinieneś być w stanie go rozebrać i użyć kodu kompatybilnego z C.
Specyfikacji HTTP i Firebug były bardzo przydatne dla mnie, gdy miałem to zrobić dla mojej domowej.
Powodzenia z twoim. :)
Proponuję spojrzeć na źródło do czegoś takiego jak lighthttpd .
http://www.manning.com/hethmon/ - „Ilustrowany przewodnik po HTTP autorstwa Paula S. Hethmona” autorstwa Manninga to bardzo dobra książka do nauki protokołu HTTP i będzie bardzo przydatna dla kogoś, kto go implementuje / rozszerza.
Istnieje duplikat z większą liczbą odpowiedzi .
Jeden kandydat, którego jeszcze nie wymieniono, to spserver .