diff options
Diffstat (limited to 'examples/network/fortuneclient')
-rw-r--r-- | examples/network/fortuneclient/client.cpp | 34 | ||||
-rw-r--r-- | examples/network/fortuneclient/client.h | 3 |
2 files changed, 12 insertions, 25 deletions
diff --git a/examples/network/fortuneclient/client.cpp b/examples/network/fortuneclient/client.cpp index 42fed30445..a71b90dda8 100644 --- a/examples/network/fortuneclient/client.cpp +++ b/examples/network/fortuneclient/client.cpp @@ -49,10 +49,7 @@ Client::Client(QWidget *parent) , hostCombo(new QComboBox) , portLineEdit(new QLineEdit) , getFortuneButton(new QPushButton(tr("Get Fortune"))) -//! [1] , tcpSocket(new QTcpSocket(this)) -//! [1] - , blockSize(0) , networkSession(Q_NULLPTR) { setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); @@ -100,6 +97,11 @@ Client::Client(QWidget *parent) buttonBox->addButton(getFortuneButton, QDialogButtonBox::ActionRole); buttonBox->addButton(quitButton, QDialogButtonBox::RejectRole); +//! [1] + in.setDevice(tcpSocket); + in.setVersion(QDataStream::Qt_4_0); +//! [1] + connect(hostCombo, &QComboBox::editTextChanged, this, &Client::enableGetFortuneButton); connect(portLineEdit, &QLineEdit::textChanged, @@ -171,7 +173,6 @@ Client::Client(QWidget *parent) void Client::requestNewFortune() { getFortuneButton->setEnabled(false); - blockSize = 0; tcpSocket->abort(); //! [7] tcpSocket->connectToHost(hostCombo->currentText(), @@ -183,39 +184,24 @@ void Client::requestNewFortune() //! [8] void Client::readFortune() { -//! [9] - QDataStream in(tcpSocket); - in.setVersion(QDataStream::Qt_4_0); - - if (blockSize == 0) { - if (tcpSocket->bytesAvailable() < (int)sizeof(quint16)) - return; -//! [8] - -//! [10] - in >> blockSize; - } - - if (tcpSocket->bytesAvailable() < blockSize) - return; -//! [10] //! [11] + in.startTransaction(); QString nextFortune; in >> nextFortune; + if (!in.commitTransaction()) + return; + if (nextFortune == currentFortune) { QTimer::singleShot(0, this, &Client::requestNewFortune); return; } -//! [11] -//! [12] currentFortune = nextFortune; -//! [9] statusLabel->setText(currentFortune); getFortuneButton->setEnabled(true); } -//! [12] +//! [8] //! [13] void Client::displayError(QAbstractSocket::SocketError socketError) diff --git a/examples/network/fortuneclient/client.h b/examples/network/fortuneclient/client.h index 9b7d6f4dbf..3b07275ded 100644 --- a/examples/network/fortuneclient/client.h +++ b/examples/network/fortuneclient/client.h @@ -43,6 +43,7 @@ #include <QDialog> #include <QTcpSocket> +#include <QDataStream> QT_BEGIN_NAMESPACE class QComboBox; @@ -75,8 +76,8 @@ private: QPushButton *getFortuneButton; QTcpSocket *tcpSocket; + QDataStream in; QString currentFortune; - quint16 blockSize; QNetworkSession *networkSession; }; |