QtWebApp HTTP Server in C++
QtWepApp ist eine HTTP Server Bibliothek in C++, inspiriert von Java Servlets. Für Linux, Windows, Mac OS und viele andere Betriebsysteme, die das Qt Framework unterstützt. QtWebApp enthält folgende Komponenten:
- HTTP 1.0 und 1.1 Server
- Template Engine
- Logger mit Puffer
// Das Hauptprogramm startet den HTTP Server
int main(int argc,char *argv[]) {
QCoreApplication app(argc,argv);
// Einstellungen können auch aus einer Datei geladen werden
QSettings* settings=new QSettings(&app);
settings->setValue("port","8080");
settings->setValue("maxThreads","100");
// Starte den Webserver
new HttpListener(settings,new MyRequestHandler(&app),&app);
return app.exec();
}
// Der Request Handler empfängt und beantwortet HTTP Requests
void MyRequestHandler::service(HttpRequest& request,HttpResponse& response) {
// Frage einen Request-Parameter ab
QByteArray username=request.getParameter("username");
// Setze einen Antwort-Header
response.setHeader("Content-Type","text/html");
// Erzeuge das HTML Dokument
response.write("<html><body>");
response.write("Hallo ");
response.write(username);
response.write("</body></html>");
}
Durch den geringen Speicherbedarf von ca. 2MB eignet sich der Webserver für embedded Systeme. Zum Beispiel für den Bier-brau Automat von Sebastian Düll. Aber er ist auch für große Web-Dienste geeignet.
Der Logger verbessert Speicherplatz und Leistung, indem er Debug Meldungen im Speicher zurück hält bis ein Fehler auftritt. So lange alles gut läuft, werden keine Debug Meldungen ausgegeben. Änderungen an der Konfiguration des Loggers werden automatisch ohne Neustart aktiv.
Quelltext, Anleitung, API Dokumentation .
Die Bibliothek läuft mit Qt Version 4.7 bis 6.x. Im Fall von Qt6 musst du die Qt5Compat Bibliothek installieren. Darin befindet sich der Support für zahlreiche 8 Bit Zeichensätze, die Qt6 standardmäßig nicht mehr unterstützt. Du darfst die Software unter Einhaltung der LGPL Lizenz verwenden.
Wie es begann
Vor vielen Jahren behauptete ein sehr erfahrener Java Entwickler, dass Java die Internet Sprache sei, weil Internet Kommunikation in anderen Programmiersprachen viel komplizierter sei. Um diese Behauptung zu überprüfen, starteten wir einen Wettlauf. Die Aufgabe war:- Programmiere einen HTTP Server mit einigen grundlegenden Funktionen ausschließlich unter Verwendung der Java 6 Laufzeit-Bibliothek versus Qt 4.
Dankeschön
Die aktuelle hohe Qualität der Bibliothek ist das Ergebnis der Zusammenarbeit vieler Leute. Ich möchte an dieser Stelle den Helfern danken, die QtWebApp in produktiver Umgebung umfangreich getestet und so zur Verbesserung beigetragen haben.