• 9696阅读
  • 4回复

QT TcpSocket可以做到长连接状态吗? [复制链接]

上一主题 下一主题
离线demowolf
 

只看楼主 倒序阅读 楼主  发表于: 2010-05-12
QT TcpSocket可以做到长连接状态吗?
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
我下载的最新的SDK 4.6,里面有个例子,下载官方地址如下:

http://doc.qt.nokia.com/4.6/network-threadedfortuneserver.html

Threaded Fortune Server Example

这是一个代码中的一段,是服务器返回数据给客户端的代码。我比较有疑问的是,最后2句。是不是我注释掉,就能保持永久连接了?

实际操作中,我发现注释后,客户端什么都收不到。直接报连接中断。这该怎么办啊?

我就想在这个样例代码的基础上改改,达到实在服务器单方面对长连接的客户端不断发送消息,客户端持续更新字符串的。请问该怎么改造了实现?

void FortuneThread::run()
{
    QTcpSocket tcpSocket;

    QByteArray block;
    QDataStream out(&block, QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_4_0);
    out << (quint16)0;
    out << text;
    out.device()->seek(0);
    out << (quint16)(block.size() - sizeof(quint16));
//! [3] //! [4]

    tcpSocket.write(block);
   tcpSocket.disconnectFromHost();
    tcpSocket.waitForDisconnected();
}
离线demowolf

只看该作者 1楼 发表于: 2010-05-13
大师们。。。教教我嘛。。。
离线g_tree
只看该作者 2楼 发表于: 2011-05-12
帮顶~~~~
离线oscarboycn

只看该作者 3楼 发表于: 2011-06-08
是不是我注释掉,就能保持永久连接了?

==================

原则上,只要不断开连接,是这样的
http://www.21ic.com
http://bbs.eetop.cn
http://www.eetop.cn/
http://www.eet-china.com/
http://www.netyi.net/
http://www.pcbbbs.com/
http://www.pcbtech.net/
离线snowseya

只看该作者 4楼 发表于: 2011-06-10
建一指针,保存该连接,只要不销掉,这个连接就会一直存在了。
快速回复
限100 字节
 
上一个 下一个