Qt5NetworkSocket编程.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Qt5NetworkSocket编程

Qt多线程TCP Socket开发指南 预备知识 Qt Network 提供了一组用于TCP/IP编程的APIs,例如requests,、cookies、以及使用HTTP协议发送数据,它们通过各种类型的C++ classes完成。 入门指南 调用Qt Network 类,需要包含此C++头文件: #include QtNetwork 编译链接Qt Network 模块,需要将此行添加到project文件: QT += network 文章和指南 这些文章包含有关Qt Network设置和网络功能的应用。 Qt网络编程 - 网络功能相关的应用编程; 支持管理 - 一个用来控制系统连接状态的API; 安全的Sockets (SSL) 类?- 安全通信网络Sockets类。 API 参考 以下是相关API参考资料的链接: C++ Classes 开发示例 这个例子是类似Local Server 的开发示例,但在这里我们将实现一个从QTcpServer? 类继承而来的多线程Socket服务器。 为此,我们需要两个类:FortuneServer类、?QTcpServer?子类,其中FortuneThread继承自QThread。 class FortuneServer : public QTcpServer { Q_OBJECT public: FortuneServer( QObject *parent=0); protected: void incomingConnection(qintptr socketDescriptor) Q_DECL_OVERRIDE; private: QStringList fortunes; }; FortuneServer继承?QTcpServer?并重载QTcpServer::incomingConnection(),我们也用它来存储随机数列表。 FortuneServer::FortuneServer(QObject *parent) : QTcpServer(parent) { fortunes tr(Youve been leading a dogs life. Stay off the furniture.) tr(Youve got to think about tomorrow.) tr(You will be surprised by a loud noise.) tr(You will feel hungry again in another hour.) tr(You might have mail.) tr(You cannot kill time without injuring eternity.) tr(Computers are not intelligent. They only think they are.); } 我们使用FortuneServer的构造函数简单的产生fortunes列表。 void FortuneServer::incomingConnection(qintptr socketDescriptor) { QString fortune = fortunes.at(qrand() % fortunes.size()); FortuneThread *thread = new FortuneThread(socketDescriptor, fortune, this); connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater())); thread-start(); } 我们使用?QTcpServer::incomingConnection() 来创建一个FortuneThread对象,通过传入的套接字描述符和一个随机数fortune构造FortuneThread。 通过连接FortuneThread的finished() 信号QObject::deleteLater() ,确保一旦线程执行完成,立即结束线程。线程从QThread::start() 开始执行。 class FortuneThread : public QThread { Q_OBJECT public: FortuneThread(int socketDescriptor, const QString fortune, QObject *parent

文档评论(0)

liudao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档