A<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B%2FQt%2FQTcpSocket</id>
		<title>C++/Qt/QTcpSocket - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B%2FQt%2FQTcpSocket"/>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B/Qt/QTcpSocket&amp;action=history"/>
		<updated>2026-04-18T22:23:34Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C%2B%2B/Qt/QTcpSocket&amp;diff=1182&amp;oldid=prev</id>
		<title> в 14:21, 25 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B/Qt/QTcpSocket&amp;diff=1182&amp;oldid=prev"/>
				<updated>2010-05-25T14:21:06Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 14:21, 25 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C%2B%2B/Qt/QTcpSocket&amp;diff=1183&amp;oldid=prev</id>
		<title>Admin: 1 версия:&amp;#32;Импорт контента...</title>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B/Qt/QTcpSocket&amp;diff=1183&amp;oldid=prev"/>
				<updated>2010-05-25T10:25:03Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия: Импорт контента...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==QTcpSocket based client==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#ifndef CLIENT_H&lt;br /&gt;
#define CLIENT_H&lt;br /&gt;
#include &amp;lt;QDialog&amp;gt;&lt;br /&gt;
#include &amp;lt;QTcpSocket&amp;gt;&lt;br /&gt;
QT_BEGIN_NAMESPACE&lt;br /&gt;
class QDialogButtonBox;&lt;br /&gt;
class QLabel;&lt;br /&gt;
class QLineEdit;&lt;br /&gt;
class QPushButton;&lt;br /&gt;
class QTcpSocket;&lt;br /&gt;
QT_END_NAMESPACE&lt;br /&gt;
class Client : public QDialog&lt;br /&gt;
{&lt;br /&gt;
    Q_OBJECT&lt;br /&gt;
public:&lt;br /&gt;
    Client(QWidget *parent = 0);&lt;br /&gt;
private slots:&lt;br /&gt;
    void requestNewFortune();&lt;br /&gt;
    void readFortune();&lt;br /&gt;
    void displayError(QAbstractSocket::SocketError socketError);&lt;br /&gt;
    void enableGetFortuneButton();&lt;br /&gt;
private:&lt;br /&gt;
    QLabel *hostLabel;&lt;br /&gt;
    QLabel *portLabel;&lt;br /&gt;
    QLineEdit *hostLineEdit;&lt;br /&gt;
    QLineEdit *portLineEdit;&lt;br /&gt;
    QLabel *statusLabel;&lt;br /&gt;
    QPushButton *getFortuneButton;&lt;br /&gt;
    QPushButton *quitButton;&lt;br /&gt;
    QDialogButtonBox *buttonBox;&lt;br /&gt;
    QTcpSocket *tcpSocket;&lt;br /&gt;
    QString currentFortune;&lt;br /&gt;
    quint16 blockSize;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;QtGui&amp;gt;&lt;br /&gt;
#include &amp;lt;QtNetwork&amp;gt;&lt;br /&gt;
#include &amp;quot;client.h&amp;quot;&lt;br /&gt;
Client::Client(QWidget *parent): QDialog(parent)&lt;br /&gt;
{&lt;br /&gt;
    hostLabel = new QLabel(tr(&amp;quot;&amp;amp;Server name:&amp;quot;));&lt;br /&gt;
    portLabel = new QLabel(tr(&amp;quot;S&amp;amp;erver port:&amp;quot;));&lt;br /&gt;
    hostLineEdit = new QLineEdit(&amp;quot;Localhost&amp;quot;);&lt;br /&gt;
    portLineEdit = new QLineEdit;&lt;br /&gt;
    portLineEdit-&amp;gt;setValidator(new QIntValidator(1, 65535, this));&lt;br /&gt;
    hostLabel-&amp;gt;setBuddy(hostLineEdit);&lt;br /&gt;
    portLabel-&amp;gt;setBuddy(portLineEdit);&lt;br /&gt;
    statusLabel = new QLabel(tr(&amp;quot;This examples requires that you run the &amp;quot;&lt;br /&gt;
                                &amp;quot;Fortune Server example as well.&amp;quot;));&lt;br /&gt;
    getFortuneButton = new QPushButton(tr(&amp;quot;Get Fortune&amp;quot;));&lt;br /&gt;
    getFortuneButton-&amp;gt;setDefault(true);&lt;br /&gt;
    getFortuneButton-&amp;gt;setEnabled(false);&lt;br /&gt;
    quitButton = new QPushButton(tr(&amp;quot;Quit&amp;quot;));&lt;br /&gt;
    buttonBox = new QDialogButtonBox;&lt;br /&gt;
    buttonBox-&amp;gt;addButton(getFortuneButton, QDialogButtonBox::ActionRole);&lt;br /&gt;
    buttonBox-&amp;gt;addButton(quitButton, QDialogButtonBox::RejectRole);&lt;br /&gt;
&lt;br /&gt;
    tcpSocket = new QTcpSocket(this);&lt;br /&gt;
    connect(hostLineEdit, SIGNAL(textChanged(const QString &amp;amp;)),this, SLOT(enableGetFortuneButton()));&lt;br /&gt;
    connect(portLineEdit, SIGNAL(textChanged(const QString &amp;amp;)),this, SLOT(enableGetFortuneButton()));&lt;br /&gt;
    connect(getFortuneButton, SIGNAL(clicked()),this, SLOT(requestNewFortune()));&lt;br /&gt;
    connect(quitButton, SIGNAL(clicked()), this, SLOT(close()));&lt;br /&gt;
    connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(readFortune()));&lt;br /&gt;
    connect(tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)),this, SLOT(displayError(QAbstractSocket::SocketError)));&lt;br /&gt;
    QGridLayout *mainLayout = new QGridLayout;&lt;br /&gt;
    mainLayout-&amp;gt;addWidget(hostLabel, 0, 0);&lt;br /&gt;
    mainLayout-&amp;gt;addWidget(hostLineEdit, 0, 1);&lt;br /&gt;
    mainLayout-&amp;gt;addWidget(portLabel, 1, 0);&lt;br /&gt;
    mainLayout-&amp;gt;addWidget(portLineEdit, 1, 1);&lt;br /&gt;
    mainLayout-&amp;gt;addWidget(statusLabel, 2, 0, 1, 2);&lt;br /&gt;
    mainLayout-&amp;gt;addWidget(buttonBox, 3, 0, 1, 2);&lt;br /&gt;
    setLayout(mainLayout);&lt;br /&gt;
    setWindowTitle(tr(&amp;quot;Fortune Client&amp;quot;));&lt;br /&gt;
    portLineEdit-&amp;gt;setFocus();&lt;br /&gt;
}&lt;br /&gt;
void Client::requestNewFortune()&lt;br /&gt;
{&lt;br /&gt;
    getFortuneButton-&amp;gt;setEnabled(false);&lt;br /&gt;
    blockSize = 0;&lt;br /&gt;
    tcpSocket-&amp;gt;abort();&lt;br /&gt;
    tcpSocket-&amp;gt;connectToHost(hostLineEdit-&amp;gt;text(),&lt;br /&gt;
                             portLineEdit-&amp;gt;text().toInt());&lt;br /&gt;
}&lt;br /&gt;
void Client::readFortune()&lt;br /&gt;
{&lt;br /&gt;
    QDataStream in(tcpSocket);&lt;br /&gt;
    in.setVersion(QDataStream::Qt_4_0);&lt;br /&gt;
    if (blockSize == 0) {&lt;br /&gt;
        if (tcpSocket-&amp;gt;bytesAvailable() &amp;lt; (int)sizeof(quint16))&lt;br /&gt;
            return;&lt;br /&gt;
        in &amp;gt;&amp;gt; blockSize;&lt;br /&gt;
    }&lt;br /&gt;
    if (tcpSocket-&amp;gt;bytesAvailable() &amp;lt; blockSize)&lt;br /&gt;
        return;&lt;br /&gt;
    QString nextFortune;&lt;br /&gt;
    in &amp;gt;&amp;gt; nextFortune;&lt;br /&gt;
    if (nextFortune == currentFortune) {&lt;br /&gt;
        QTimer::singleShot(0, this, SLOT(requestNewFortune()));&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    currentFortune = nextFortune;&lt;br /&gt;
    statusLabel-&amp;gt;setText(currentFortune);&lt;br /&gt;
    getFortuneButton-&amp;gt;setEnabled(true);&lt;br /&gt;
}&lt;br /&gt;
void Client::displayError(QAbstractSocket::SocketError socketError)&lt;br /&gt;
{&lt;br /&gt;
    switch (socketError) {&lt;br /&gt;
    case QAbstractSocket::RemoteHostClosedError:&lt;br /&gt;
        break;&lt;br /&gt;
    case QAbstractSocket::HostNotFoundError:&lt;br /&gt;
        QMessageBox::information(this, tr(&amp;quot;Fortune Client&amp;quot;),&lt;br /&gt;
                                 tr(&amp;quot;The host was not found. Please check the &amp;quot;&lt;br /&gt;
                                    &amp;quot;host name and port settings.&amp;quot;));&lt;br /&gt;
        break;&lt;br /&gt;
    case QAbstractSocket::ConnectionRefusedError:&lt;br /&gt;
        QMessageBox::information(this, tr(&amp;quot;Fortune Client&amp;quot;),&lt;br /&gt;
                                 tr(&amp;quot;The connection was refused by the peer. &amp;quot;&lt;br /&gt;
                                    &amp;quot;Make sure the fortune server is running, &amp;quot;&lt;br /&gt;
                                    &amp;quot;and check that the host name and port &amp;quot;&lt;br /&gt;
                                    &amp;quot;settings are correct.&amp;quot;));&lt;br /&gt;
        break;&lt;br /&gt;
    default:&lt;br /&gt;
        QMessageBox::information(this, tr(&amp;quot;Fortune Client&amp;quot;),&lt;br /&gt;
                                 tr(&amp;quot;The following error occurred: %1.&amp;quot;)&lt;br /&gt;
                                 .arg(tcpSocket-&amp;gt;errorString()));&lt;br /&gt;
    }&lt;br /&gt;
    getFortuneButton-&amp;gt;setEnabled(true);&lt;br /&gt;
}&lt;br /&gt;
void Client::enableGetFortuneButton(){&lt;br /&gt;
    getFortuneButton-&amp;gt;setEnabled(!hostLineEdit-&amp;gt;text().isEmpty()&lt;br /&gt;
                                 &amp;amp;&amp;amp; !portLineEdit-&amp;gt;text().isEmpty());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;QApplication&amp;gt;&lt;br /&gt;
#include &amp;quot;client.h&amp;quot;&lt;br /&gt;
int main(int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
    QApplication app(argc, argv);&lt;br /&gt;
    Client client;&lt;br /&gt;
    client.show();&lt;br /&gt;
    return client.exec();&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>