From d796c9dd933ab96ec83b9a634feedd5d32e1ba3f Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Tue, 8 Nov 2011 12:31:36 -0600 Subject: Test conversion to TQt3 from Qt3 8c6fc1f8e35fd264dd01c582ca5e7549b32ab731 --- doc/html/httpd-example.html | 195 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 195 insertions(+) create mode 100644 doc/html/httpd-example.html (limited to 'doc/html/httpd-example.html') diff --git a/doc/html/httpd-example.html b/doc/html/httpd-example.html new file mode 100644 index 00000000..fbd007f3 --- /dev/null +++ b/doc/html/httpd-example.html @@ -0,0 +1,195 @@ + + + + + +A simple HTTP daemon + + + + + + + +
+ +Home + | +All Classes + | +Main Classes + | +Annotated + | +Grouped Classes + | +Functions +

A simple HTTP daemon

+ + +

+

This example shows how to use the TQServerSocket class. It is a very +simple implementation of a HTTP daemon that listens on port 8080 and +sends back a simple HTML page back for every GET request it gets. After +sending the page, it closes the connection. +


+

Implementation (httpd.cpp): +

/****************************************************************************
+** $Id: qt/httpd.cpp   3.3.8   edited Jan 11 14:37 $
+**
+** Copyright (C) 1992-2007 Trolltech ASA.  All rights reserved.
+**
+** This file is part of an example program for TQt.  This example
+** program may be used, distributed and modified without limitation.
+**
+*****************************************************************************/
+#include <stdlib.h>
+#include <qsocket.h>
+#include <qregexp.h>
+#include <qserversocket.h>
+#include <qapplication.h>
+#include <qmainwindow.h>
+#include <qtextstream.h>
+#include <qvbox.h>
+#include <qlabel.h>
+#include <qtextview.h>
+#include <qpushbutton.h>
+
+// HttpDaemon is the the class that implements the simple HTTP server.
+class HttpDaemon : public TQServerSocket
+{
+    Q_OBJECT
+public:
+    HttpDaemon( TQObject* parent=0 ) :
+        TQServerSocket(8080,1,parent)
+    {
+        if ( !ok() ) {
+            qWarning("Failed to bind to port 8080");
+            exit( 1 );
+        }
+    }
+
+    void newConnection( int socket )
+    {
+        // When a new client connects, the server constructs a TQSocket and all
+        // communication with the client is done over this TQSocket. TQSocket
+        // works asynchronouslyl, this means that all the communication is done
+        // in the two slots readClient() and discardClient().
+        TQSocket* s = new TQSocket( this );
+        connect( s, SIGNAL(readyRead()), this, SLOT(readClient()) );
+        connect( s, SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) );
+        s->setSocket( socket );
+        emit newConnect();
+    }
+
+signals:
+    void newConnect();
+    void endConnect();
+    void wroteToClient();
+
+private slots:
+    void readClient()
+    {
+        // This slot is called when the client sent data to the server. The
+        // server looks if it was a get request and sends a very simple HTML
+        // document back.
+        TQSocket* socket = (TQSocket*)sender();
+        if ( socket->canReadLine() ) {
+            TQStringList tokens = TQStringList::split( TQRegExp("[ \r\n][ \r\n]*"), socket->readLine() );
+            if ( tokens[0] == "GET" ) {
+                TQTextStream os( socket );
+                os.setEncoding( TQTextStream::UnicodeUTF8 );
+                os << "HTTP/1.0 200 Ok\r\n"
+                    "Content-Type: text/html; charset=\"utf-8\"\r\n"
+                    "\r\n"
+                    "<h1>Nothing to see here</h1>\n";
+                socket->close();
+                emit wroteToClient();
+            }
+        }
+    }
+    void discardClient()
+    {
+        TQSocket* socket = (TQSocket*)sender();
+        delete socket;
+        emit endConnect();
+    }
+};
+
+
+// HttpInfo provides a simple graphical user interface to the server and shows
+// the actions of the server.
+class HttpInfo : public TQVBox
+{
+    Q_OBJECT
+public:
+    HttpInfo()
+    {
+        HttpDaemon *httpd = new HttpDaemon( this );
+
+        TQString itext = TQString(
+                "This is a small httpd example.\n"
+                "You can connect with your\n"
+                "web browser to port %1"
+            ).arg( httpd->port() );
+        TQLabel *lb = new TQLabel( itext, this );
+        lb->setAlignment( AlignHCenter );
+        infoText = new TQTextView( this );
+        TQPushButton *tquit = new TQPushButton( "tquit" , this );
+
+        connect( httpd, SIGNAL(newConnect()), SLOT(newConnect()) );
+        connect( httpd, SIGNAL(endConnect()), SLOT(endConnect()) );
+        connect( httpd, SIGNAL(wroteToClient()), SLOT(wroteToClient()) );
+        connect( tquit, SIGNAL(pressed()), qApp, SLOT(tquit()) );
+    }
+
+    ~HttpInfo()
+    {
+    }
+
+private slots:
+    void newConnect()
+    {
+        infoText->append( "New connection" );
+    }
+    void endConnect()
+    {
+        infoText->append( "Connection closed\n\n" );
+    }
+    void wroteToClient()
+    {
+        infoText->append( "Wrote to client" );
+    }
+
+private:
+    TQTextView *infoText;
+};
+
+
+int main( int argc, char** argv )
+{
+    TQApplication app( argc, argv );
+    HttpInfo info;
+    app.setMainWidget( &info );
+    info.show();
+    return app.exec();
+}
+
+#include "httpd.moc"
+
+ +

See also Network Examples. + + +


+ +
Copyright © 2007 +TrolltechTrademarks +
TQt 3.3.8
+
+ -- cgit v1.2.1