2010-11-12 13 views
23

Potrzebuję zbudować lekki serwer http dla mojej aplikacji zasadniczo jest to serwer, który nasłuchuje na porcie i wyprowadza informację o statusie na żądanie brak dużego obciążenia, https, wymagana jest inna funkcjonalność czy jest jakiś Biblioteka C++, która pomogłaby mi zbudować serwer http:lekki serwer http C++

+0

@ user490710 spojrzeć na boost..Jeśli Windows, dlaczego nie WinHTTP? – yadab

+0

Istnieje również biblioteka sieciowa http://prog-xp.blogspot.fr/2011/01/creating-simple-web-server-with-pion.html – Offirmo

+0

Poco (http://pocoproject.org) może być opcja. Ma gotowy serwer HTTP. – Eonil

Odpowiedz

0

Wszystko tam jest (standard C++) ... gniazda, odczyt/zapis, czy TCP i inne funkcje dla UDP (jeśli go użyjesz), itp ... Nie ma nic więcej, czego potrzebujesz, ale funkcje sieciowe, reszta jest do zarządzania plikami (czytanie plików html i tak dalej) i wątków, jeśli chcesz iść dalej.

NAPRAWDĘ porad można przeczytać ten przewodnik:

http://beej.us/guide/bgnet/

To nic nie kosztuje i to wyjaśnia wszystko, czego potrzeba do wykonania tego małego serwera WWW.

Przypuszczam, że to jest zadanie, nie dostałem tego na moich zajęciach w sieci, ale niektórzy znajomi to zrobili, i jest to całkiem łatwe i przyjemne, jeśli masz trochę wiedzy C++.

+0

Ale jeśli chcesz, żeby była zgodna z RFC - zamiast zwykłej pracy ze zwykłymi przeglądarkami - nie jest to zbyt banalne. – smilingthax

+0

@smilingthax: Wiem, dlatego założyłem, że to zadanie na uczelni. Nie można tak naprawdę zakodować serwera WWW zgodnego z RFC w ciągu 1 lub 2 tygodni, co jest normalnym terminem, podczas gdy trzeba uczyć się innych rzeczy. Jeśli rzeczywiście jest to zadanie, prawdopodobnie chce mieć prosty wątek (lub nie, mój został wklejony) serwer WWW, który może obsłużyć w zasadzie GET, POST i kilka innych prostych rzeczy HTML i zarządzać niektórymi plikami HTML. Jeśli to nie jest zadanie ...dlaczego, na litość boską, ktoś chciałby zakodować własny serwer z tak wieloma lekkimi i bezpiecznymi implementacjami? – hfingler

+0

"Wszystko tam jest (standard C++) ... gniazda, odczyt/zapis, jeśli TCP i inne funkcje dla UDP (jeśli go użyjesz) itp.". Czy jest coś do zrobienia z HTTP, jak parser nagłówka? –

18

Spójrz na http://code.google.com/p/mongoose/. Myślę, że jest oddzielony w bibliotece, która robi dokładnie to, co chcesz. Jednak jest napisane w C.

+1

+1 Mój zespół używa mangusty do lekkich usług ... to ~ 5200 linii C, trzy pliki źródłowe, jedna strona podręcznika i setka Makefile. serwery main.c jako dobry przykład wywoływania mg_start(), aby uruchomić serwer w wątku tła .... –

+0

Chciałbym skorzystać z okazji i zapytać, czy mangusta zna ograniczenia dla usług nie-lekkich. Czy jeśli starannie opracuję stronę internetową, czy można ją wykorzystać jako zamiennik PHP pod względem wydajności, czy też będzie ona opóźniona w stosunku do mnie, jeśli nie poprawię jego kodu źródłowego? –

+0

Zgubiłeś mnie - PHP to język używany do dynamicznego generowania treści i łatwo wywoływalny przez demona HTTP (serwer WWW, np. Mangusta), ale nie jest demonem HTTP. Nie rozumiem, jak mangusta może zastąpić PHP, ponieważ jest to zupełnie odrębna bestia. Nadal można się zastanawiać, czy Apache + PHP może przewyższyć mongoose + PHP ... Nie wiem - nigdy nie próbowałem nawet używać PHP z mangustą. Obsługujemy naprawdę proste rzeczy: statyczny HTML i arkusze stylów. –

2

Istnieje libmicrohttpd. Musiałem napisać trochę kodu z klejem, żeby pasował do mojego celu; ale nigdy nie żałowałem.

+0

Czy mogę zapytać, dlaczego potrzebował kleju? Wygląda idealnie. –

+0

@ n2liquid: Chociaż ma kilka opcji użycia go z inną pętlą zdarzeń, nie było to wystarczające dla mojego przypadku (aplikacja GUI, tj. Glib/Gtk (mm)). Również interfejs API jest niższy niż serwowanie np. pełny katalog lokalny. – smilingthax

+1

Ah, rozumiem. Osobiście nienawidzę bibliotek kradnących główną pętlę ... –

2

Jeśli chcesz korzystać z interaktywności, rozważ użycie opcji wt.