[QT] Simple http server na apache
-
- Piegowaty Guziec
- Posty: 13
- Rejestracja: 26 lut 2007, 22:57
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.04
- Środowisko graficzne: Xfce
- Architektura: x86
- Kontakt:
[Solved] [QT] Simple http server na apache
Piszę aplikację przesyłającą dane (stronkę) na podstawie ścieżki wyszukiwania URL (query string) np. http://www.darmorza.co/projekt/program? ... maczne=tak.
Po dłuższych poszukiwaniach znalazłem ("A simple HTTP Server"):
http://doc.qt.nokia.com/solutions/4/qts ... erver.html
Ściągnąłem kod ze strony, dałem klasy w plik nagłówkowy, dodałem potrzebne biblioteki, ściągnąłem i zainstalowałem qtservice-2.6-opensource... skompilowałem ...
... niby aplikacja chodzi, ale nie daje wyników!?
Umieściłem na apache, dałem w localhost port 80 (zmieniałem port na 80. Port 8080 na apachu mi szwankuje) ale strona nie reaguje na program - nie odpowiada... Dziwi mnie też fakt że nigdzie w przykładowym źródle nie jest wymagana nazwa serwera.
Może ktoś wie co robię nie tak i może mi pomoc?
Po dłuższych poszukiwaniach znalazłem ("A simple HTTP Server"):
http://doc.qt.nokia.com/solutions/4/qts ... erver.html
Ściągnąłem kod ze strony, dałem klasy w plik nagłówkowy, dodałem potrzebne biblioteki, ściągnąłem i zainstalowałem qtservice-2.6-opensource... skompilowałem ...
... niby aplikacja chodzi, ale nie daje wyników!?
Umieściłem na apache, dałem w localhost port 80 (zmieniałem port na 80. Port 8080 na apachu mi szwankuje) ale strona nie reaguje na program - nie odpowiada... Dziwi mnie też fakt że nigdzie w przykładowym źródle nie jest wymagana nazwa serwera.
Może ktoś wie co robię nie tak i może mi pomoc?
-
- Piegowaty Guziec
- Posty: 23
- Rejestracja: 22 lis 2010, 11:52
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.10
- Środowisko graficzne: GNOME
- Architektura: x86_64
Odp: [QT] Simple http server na apache
albo apache albo to co podałeś w doc QT...
apache jak i ten program w doc to serwery www a nie same apliakcje uruchamiane na nich...
musisz wybrac czy chcesz uzywac apacha via cgi czy napisać wlasny serwer www (w sumie masz prawie gotowego) w qt
apache jak i ten program w doc to serwery www a nie same apliakcje uruchamiane na nich...
musisz wybrac czy chcesz uzywac apacha via cgi czy napisać wlasny serwer www (w sumie masz prawie gotowego) w qt

-
- Piegowaty Guziec
- Posty: 13
- Rejestracja: 26 lut 2007, 22:57
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.04
- Środowisko graficzne: Xfce
- Architektura: x86
- Kontakt:
Odp: [QT] Simple http server na apache
Dzięki... do spraw sieciowych nie mam intuicji, a jestem "na ostrzu noża"...
Jeżeli mam prawie gotowy serwer w qt, to nie wiem co mi jeszcze brakuje
Nie wiem też jak go odpalić by był widoczny przez np. firefoxa... nie mogę znaleźć miejsca w kodzie gdzie można podać adres... tych klas i metod sieciowych w QT jest od groma... dasz xfermi dalsze wskazówki?
Jeżeli mam prawie gotowy serwer w qt, to nie wiem co mi jeszcze brakuje

Nie wiem też jak go odpalić by był widoczny przez np. firefoxa... nie mogę znaleźć miejsca w kodzie gdzie można podać adres... tych klas i metod sieciowych w QT jest od groma... dasz xfermi dalsze wskazówki?
- DDAroo
- Serdeczny Borsuk
- Posty: 107
- Rejestracja: 27 cze 2009, 10:47
- Płeć: Mężczyzna
- Wersja Ubuntu: 11.04
- Środowisko graficzne: KDE Plasma
- Architektura: x86
- Lokalizacja: Kraków
- Kontakt:
Odp: [QT] Simple http server na apache
Chcesz napisać (1)serwer www czy (2)program działający na serwerze www?
1. Napisać program, który nasłuchuje na porcie 80 komputera, czyta żądania HTTP i udziela odpowiedzi też jako strony HTTP. Taki program musi być później umieszczony i uruchomiony na jakimś fizycznym serwerze albo Twoim komputerze.
2. Napisać program php, który wyświetla stronę w zależności or URL jaki wpiszesz w przeglądarke. Taki program umieszcza się na serwerze www np. apache.
1. Napisać program, który nasłuchuje na porcie 80 komputera, czyta żądania HTTP i udziela odpowiedzi też jako strony HTTP. Taki program musi być później umieszczony i uruchomiony na jakimś fizycznym serwerze albo Twoim komputerze.
2. Napisać program php, który wyświetla stronę w zależności or URL jaki wpiszesz w przeglądarke. Taki program umieszcza się na serwerze www np. apache.
-
- Piegowaty Guziec
- Posty: 13
- Rejestracja: 26 lut 2007, 22:57
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.04
- Środowisko graficzne: Xfce
- Architektura: x86
- Kontakt:
Odp: [QT] Simple http server na apache
To jest część większego programu i ma za zadanie przesyłać stronkę na podstawie ścieżki wyszukiwania URL (query string) np. http://www.darmorza.co/projekt/program? ... maczne=tak.
Najprawdopodobniej (1) (zaczynam rozumieć)
Czy mam dodać metody QTcpServer (np. listening) do Simple HTTP Server? Czy potrzebuję innych metod? Czy też zrezygnować wogóle z Simple HTTP Server?
Najprawdopodobniej (1) (zaczynam rozumieć)
Czy mam dodać metody QTcpServer (np. listening) do Simple HTTP Server? Czy potrzebuję innych metod? Czy też zrezygnować wogóle z Simple HTTP Server?
-
- Piegowaty Guziec
- Posty: 23
- Rejestracja: 22 lis 2010, 11:52
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.10
- Środowisko graficzne: GNOME
- Architektura: x86_64
Odp: [QT] Simple http server na apache
nie - poprostu jak dodasz klase QTcpServer, pozniej wraz ze startem głównego programu odpala się ona jako wątek i oczekuje na połączenia http...
tylko jeżeli chcesz tak jak Ty masz w url gdzie program to twoj program - nie zrobisz tego w QT innaczej
http://www.darmorza.co/projekt/program? ... maczne=tak
program to musi byc aplikacja php,perl,python etc lub C++ odpalany z poziomu cgi.
tylko jeżeli chcesz tak jak Ty masz w url gdzie program to twoj program - nie zrobisz tego w QT innaczej
http://www.darmorza.co/projekt/program? ... maczne=tak
program to musi byc aplikacja php,perl,python etc lub C++ odpalany z poziomu cgi.
- DDAroo
- Serdeczny Borsuk
- Posty: 107
- Rejestracja: 27 cze 2009, 10:47
- Płeć: Mężczyzna
- Wersja Ubuntu: 11.04
- Środowisko graficzne: KDE Plasma
- Architektura: x86
- Lokalizacja: Kraków
- Kontakt:
Odp: [QT] Simple http server na apache
Ok, czyli masz napisać prosty serwer www. Na początek musisz wiedzieć co będzie otrzymywał Twój program oraz co ma zwracać. Strony www są przesyłane przy użyciu protokołu HTTP. Przykładowo, moja przeglądarka gdy chce wyświetlić stronę http://en.wikipedia.org/wiki/Hypertext_ ... r_Protocol wysyła do serwera en.wikipedia.org żądanie HTTP o takiej treści:
Serwer www wikipedii wysyła taką odpowiedź:
Twój serwer wystarczy, że będzie wysyłał na przykład taką odpowiedź:
Zwróć uwagę, że nagłówek HTTP i treść strony jest oddzielana przez dwa "entery", czyli przez dwie serie znaków \r\n - powrót karetki + znak nowej linii. Ponieważ Twój serwer ma być bardzo prosty, więc możesz założyć, że żądanie strony wygląda podobnie do żądania opery do wikipedii. Realne serwery muszą być w stanie obsługiwać znacznie bardziej zwariowane żądania.
Zanim zaczniesz przerabiać ten simple HTTP serwer upewnij się, że potrafisz skompilować jego kod i uruchomić program. Kompilowanie programu korzystającego z Qt wymaga ciut więcej zachodu niż kompilowanie standardowego programu C++. Umiesz to zrobić?
Kod: Zaznacz cały
GET /wiki/Hypertext_Transfer_Protocol HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 6.0; U; pl) Presto/2.7.62 Version/11.00
Host: en.wikipedia.org
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: pl-PL,pl;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Referer: http://www.google.com/search?client=opera&rls=pl&q=http+example&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest
Pragma: no-cache
Cache-Control: no-cache
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers
Kod: Zaznacz cały
HTTP/1.0 200 OK
Date: Fri, 14 Jan 2011 19:56:49 GMT
Server: Apache
Cache-Control: private, s-maxage=0, max-age=0, must-revalidate
Content-Language: en
Vary: Accept-Encoding,Cookie
Last-Modified: Wed, 12 Jan 2011 16:53:53 GMT
Content-Encoding: gzip
Content-Length: 27670
Content-Type: text/html; charset=UTF-8
X-Cache: MISS from sq64.wikimedia.org
X-Cache-Lookup: HIT from sq64.wikimedia.org:3128
X-Cache: MISS from amssq40.esams.wikimedia.org
X-Cache-Lookup: HIT from amssq40.esams.wikimedia.org:3128
X-Cache: MISS from amssq46.esams.wikimedia.org
X-Cache-Lookup: MISS from amssq46.esams.wikimedia.org:80
Connection: keep-alive
[treść strony www]
Kod: Zaznacz cały
HTTP/1.0 200 OK
Content-Type: text/html; charset=UTF-8
[treść strony www]
Zanim zaczniesz przerabiać ten simple HTTP serwer upewnij się, że potrafisz skompilować jego kod i uruchomić program. Kompilowanie programu korzystającego z Qt wymaga ciut więcej zachodu niż kompilowanie standardowego programu C++. Umiesz to zrobić?
-
- Piegowaty Guziec
- Posty: 13
- Rejestracja: 26 lut 2007, 22:57
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.04
- Środowisko graficzne: Xfce
- Architektura: x86
- Kontakt:
Odp: [QT] Simple http server na apache
dodam jako ciekawostkę że obecnie kompiluję pod Windows 7 i mam problemy z bibliotekami ansi C (nie podoba mu się malloc i sprintf) a program był już kompilowany pod linuxem
Kod simple HTTP skompilowałem, tylko że on nic nie robi tylko wypisuje to co jest w qWarning. Prześledziłem klasy i nie ma wywołania metody start w konstruktorze HttpService. Nie widzę dojścia do HttpDaemon. Tak jakby brakowało jakichś wywołań klas i metod.
Nad CGI jeszcze pomyślę. Jest niby klasa QUrl, ale to na potem.
Kod simple HTTP skompilowałem, tylko że on nic nie robi tylko wypisuje to co jest w qWarning. Prześledziłem klasy i nie ma wywołania metody start w konstruktorze HttpService. Nie widzę dojścia do HttpDaemon. Tak jakby brakowało jakichś wywołań klas i metod.
Nad CGI jeszcze pomyślę. Jest niby klasa QUrl, ale to na potem.
- DDAroo
- Serdeczny Borsuk
- Posty: 107
- Rejestracja: 27 cze 2009, 10:47
- Płeć: Mężczyzna
- Wersja Ubuntu: 11.04
- Środowisko graficzne: KDE Plasma
- Architektura: x86
- Lokalizacja: Kraków
- Kontakt:
Odp: [QT] Simple http server na apache
Z dokumentacji QtService wynika, że metoda start jest wywołana automatyczne w chwili uruchamiania usługi, co zwykle ma miejsce w chwili uruchamiania systemu. Może łatwiej Ci będzie ogarnąć przykład serwera, który działa jako zwykły program, a nie usługa?
-
- Piegowaty Guziec
- Posty: 13
- Rejestracja: 26 lut 2007, 22:57
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.04
- Środowisko graficzne: Xfce
- Architektura: x86
- Kontakt:
Odp: [QT] Simple http server na apache
Wreszcie coś nowego... przy kompilacji:
-4 czyli chyba niedobrze... przy debuggowaniu:
żadna pułapka debuggera nie chwyta poza konstruktorem class HttpService : public QtService<QCoreApplication>
Kod: Zaznacz cały
Komunikaty aplikacji:
Uruchamianie E:\Moje (...)\debug\lserver.exe zakończone kodem -4
Kod: Zaznacz cały
Komunikaty aplikacji:
The service Qt HTTP Daemon could not start
-
- Piegowaty Guziec
- Posty: 13
- Rejestracja: 26 lut 2007, 22:57
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.04
- Środowisko graficzne: Xfce
- Architektura: x86
- Kontakt:
Odp: [QT] Simple http server na apache
Dziękuję za wspieranie i naprowadzanie na rozwiązanie - które znalazło się następnego dnia.
Przeanalizowałem dokładniej kod Simple Http Server i rozwiązanie okazało się banalne - wystarczyło uruchomić program z opcją -e (jak execute) lub podstawić tę wartość pod argument.
Program, wysyłający na żądanie obrazy map kartograficznych, napisałem. Dostałem dzięki temu pracę i... nie miałem czasu zamknąć temat.
Polecam postawienie sobie serwera - daje to dużo satysfakcji.
Jeszcze raz dziękuję - zamykam temat.
Przeanalizowałem dokładniej kod Simple Http Server i rozwiązanie okazało się banalne - wystarczyło uruchomić program z opcją -e (jak execute) lub podstawić tę wartość pod argument.
Program, wysyłający na żądanie obrazy map kartograficznych, napisałem. Dostałem dzięki temu pracę i... nie miałem czasu zamknąć temat.
Polecam postawienie sobie serwera - daje to dużo satysfakcji.
Jeszcze raz dziękuję - zamykam temat.
-
- Wytworny Kaczor
- Posty: 352
- Rejestracja: 15 paź 2008, 18:30
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.04
- Środowisko graficzne: KDE Plasma
Odp: [QT] Simple http server na apache
Do tego typu zastosowań warto zastanowić się nad biblioteką Wt
-
- Piegowaty Guziec
- Posty: 13
- Rejestracja: 26 lut 2007, 22:57
- Płeć: Mężczyzna
- Wersja Ubuntu: 10.04
- Środowisko graficzne: Xfce
- Architektura: x86
- Kontakt:
Odp: [QT] Simple http server na apache
Z pewnością do zaawansowanych usług serwerowych (np. blog, gierka html - dobrze rozumuję?) to Wt pewnie warto stosować. Zabawne że będę działał (o zgrozo) w VB i w VC#, a wtedy zupełnie nie wiem co jest dedykowane. Znam takie osoby co nawet na asemblerze postawiliby serwer. Jak na razie to mogę jedynie poznawać podstawy działania internetu, a taki serwis to zawsze 'coś' na początek.
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 7 gości