Muszę zbudować prosty serwer HTTP w C. Jakieś wskazówki? Spinki do mankietów? Próbki?
c
httpserver
Nathan H.
źródło
źródło
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.
źródło
tiny httpd
jest również na github tutaj: github.com/larryhe/tinyhttpdPolecam zapoznać się z: Praktycznym przewodnikiem po pisaniu klientów i serwerów
To, co musisz wdrożyć w krokach przyrostowych, to:
źródło
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.
źródło
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.
źródło
Otwórz gniazdo TCP na porcie 80, zacznij nasłuchiwać nowych połączeń, zaimplementuj to . W zależności od celów możesz zignorować prawie wszystko. Najprościej możesz wysłać tę samą odpowiedź na każde żądanie, co wiąże się tylko z wpisaniem tekstu do gniazda.
źródło
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
źródło
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.
http://code.google.com/p/mountain-cms/
źródło
Specyfikacji HTTP i Firebug były bardzo przydatne dla mnie, gdy miałem to zrobić dla mojej domowej.
Powodzenia z twoim. :)
źródło
Proponuję spojrzeć na źródło do czegoś takiego jak lighthttpd .
źródło
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.
źródło
Użyj funkcji gniazd specyficznych dla platformy, aby hermetyzować protokół HTTP, tak jak zrobili to ludzie stojący za Apache .
źródło
Istnieje duplikat z większą liczbą odpowiedzi .
Jeden kandydat, którego jeszcze nie wymieniono, to spserver .
źródło