diff options
author | Timothy Pearson <[email protected]> | 2011-07-10 15:24:15 -0500 |
---|---|---|
committer | Timothy Pearson <[email protected]> | 2011-07-10 15:24:15 -0500 |
commit | bd0f3345a938b35ce6a12f6150373b0955b8dd12 (patch) | |
tree | 7a520322212d48ebcb9fbe1087e7fca28b76185c /examples/network/clientserver/client | |
download | qt3-bd0f3345a938b35ce6a12f6150373b0955b8dd12.tar.gz qt3-bd0f3345a938b35ce6a12f6150373b0955b8dd12.zip |
Add Qt3 development HEAD version
Diffstat (limited to 'examples/network/clientserver/client')
-rw-r--r-- | examples/network/clientserver/client/client.cpp | 125 | ||||
-rw-r--r-- | examples/network/clientserver/client/client.pro | 9 |
2 files changed, 134 insertions, 0 deletions
diff --git a/examples/network/clientserver/client/client.cpp b/examples/network/clientserver/client/client.cpp new file mode 100644 index 0000000..35cfb98 --- /dev/null +++ b/examples/network/clientserver/client/client.cpp @@ -0,0 +1,125 @@ +/**************************************************************************** +** +** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved. +** +** This file is part of an example program for Qt. This example +** program may be used, distributed and modified without limitation. +** +*****************************************************************************/ + +#include <qsocket.h> +#include <qapplication.h> +#include <qvbox.h> +#include <qhbox.h> +#include <qtextview.h> +#include <qlineedit.h> +#include <qlabel.h> +#include <qpushbutton.h> +#include <qtextstream.h> + + +class Client : public QVBox +{ + Q_OBJECT +public: + Client( const QString &host, Q_UINT16 port ) + { + // GUI layout + infoText = new QTextView( this ); + QHBox *hb = new QHBox( this ); + inputText = new QLineEdit( hb ); + QPushButton *send = new QPushButton( tr("Send") , hb ); + QPushButton *close = new QPushButton( tr("Close connection") , this ); + QPushButton *quit = new QPushButton( tr("Quit") , this ); + + connect( send, SIGNAL(clicked()), SLOT(sendToServer()) ); + connect( close, SIGNAL(clicked()), SLOT(closeConnection()) ); + connect( quit, SIGNAL(clicked()), qApp, SLOT(quit()) ); + + // create the socket and connect various of its signals + socket = new QSocket( this ); + connect( socket, SIGNAL(connected()), + SLOT(socketConnected()) ); + connect( socket, SIGNAL(connectionClosed()), + SLOT(socketConnectionClosed()) ); + connect( socket, SIGNAL(readyRead()), + SLOT(socketReadyRead()) ); + connect( socket, SIGNAL(error(int)), + SLOT(socketError(int)) ); + + // connect to the server + infoText->append( tr("Trying to connect to the server\n") ); + socket->connectToHost( host, port ); + } + + ~Client() + { + } + +private slots: + void closeConnection() + { + socket->close(); + if ( socket->state() == QSocket::Closing ) { + // We have a delayed close. + connect( socket, SIGNAL(delayedCloseFinished()), + SLOT(socketClosed()) ); + } else { + // The socket is closed. + socketClosed(); + } + } + + void sendToServer() + { + // write to the server + QTextStream os(socket); + os << inputText->text() << "\n"; + inputText->setText( "" ); + } + + void socketReadyRead() + { + // read from the server + while ( socket->canReadLine() ) { + infoText->append( socket->readLine() ); + } + } + + void socketConnected() + { + infoText->append( tr("Connected to server\n") ); + } + + void socketConnectionClosed() + { + infoText->append( tr("Connection closed by the server\n") ); + } + + void socketClosed() + { + infoText->append( tr("Connection closed\n") ); + } + + void socketError( int e ) + { + infoText->append( tr("Error number %1 occurred\n").arg(e) ); + } + +private: + QSocket *socket; + QTextView *infoText; + QLineEdit *inputText; +}; + + +int main( int argc, char** argv ) +{ + QApplication app( argc, argv ); + Client client( argc<2 ? "localhost" : argv[1], 4242 ); + app.setMainWidget( &client ); + client.show(); + return app.exec(); +} + +#include "client.moc" diff --git a/examples/network/clientserver/client/client.pro b/examples/network/clientserver/client/client.pro new file mode 100644 index 0000000..bc3b9e9 --- /dev/null +++ b/examples/network/clientserver/client/client.pro @@ -0,0 +1,9 @@ +TEMPLATE = app +TARGET = client + +CONFIG += qt warn_on release + +REQUIRES = network full-config + +HEADERS = +SOURCES = client.cpp |