Qt5 Demo Fortune例程各个实现区别(network)
2014-08-26 14:20
309 查看
1.Fortune Server/Client Example
Server服务器调用tcpsocket的Listen()监听是否有来自客户端连接,
当Client客户端通过connectToHost()连接到Server后,Server端由QTcpSocket *clientConnection = tcpServer->nextPendingConnection()
创建基于该连接对象的套接字,通过write(block)向客户端发送数据。
优点:简洁明了,代码少
缺点:如果发送数据太频繁,太大,对于主线程的压力可想而知。实际工程中,数据通信多是放在单独的线程中使用。
![](https://img-blog.csdn.net/20140826144213015)
2.Blocking Fortune Client
两个主类,一个是BlockingClient,继承自QDialog,负责窗体搭建,响应用户操作等,就是GUI主线程。
另一个FortuneThread类继承自QThread,QTcpSocket对象创建在FortuneThread的run函数中。用户需要接收数据的时候,通过BlockingClient
向FortuneThread发送一个请求,通过线程连接到主机,FortuneThread接收到来自主机的数据在通过信号槽返回给主线程。这种客户端使用阻塞模式
很常见。
BlockClient调用一个全局thread来操作,使用互斥锁(QMutex)来解决竞争。
![](https://img-blog.csdn.net/20140826144417269)
3.Thread Fortune Server Example
对每个客户机的请求创建一个单独的线程来进行响应。我们不再需要互斥锁来保护资源。
Dialog类负责界面绘制,通过server.listen()开启FortuneServer监听事件,一旦有客户机连接上,server通过IncomingConnection()开启一个新的
线程FortuneThread,该线程负责将Fortune发送给客户端,之后销毁。
Server服务器调用tcpsocket的Listen()监听是否有来自客户端连接,
当Client客户端通过connectToHost()连接到Server后,Server端由QTcpSocket *clientConnection = tcpServer->nextPendingConnection()
创建基于该连接对象的套接字,通过write(block)向客户端发送数据。
优点:简洁明了,代码少
缺点:如果发送数据太频繁,太大,对于主线程的压力可想而知。实际工程中,数据通信多是放在单独的线程中使用。
2.Blocking Fortune Client
两个主类,一个是BlockingClient,继承自QDialog,负责窗体搭建,响应用户操作等,就是GUI主线程。
另一个FortuneThread类继承自QThread,QTcpSocket对象创建在FortuneThread的run函数中。用户需要接收数据的时候,通过BlockingClient
向FortuneThread发送一个请求,通过线程连接到主机,FortuneThread接收到来自主机的数据在通过信号槽返回给主线程。这种客户端使用阻塞模式
很常见。
BlockClient调用一个全局thread来操作,使用互斥锁(QMutex)来解决竞争。
3.Thread Fortune Server Example
对每个客户机的请求创建一个单独的线程来进行响应。我们不再需要互斥锁来保护资源。
Dialog类负责界面绘制,通过server.listen()开启FortuneServer监听事件,一旦有客户机连接上,server通过IncomingConnection()开启一个新的
线程FortuneThread,该线程负责将Fortune发送给客户端,之后销毁。
相关文章推荐
- Qt5官方Demo解析集5(总结)——Fortune例程的各个实现区别
- Qt模块化笔记之network——第二个TCP程序,传输图片文件的实现(2)
- Qt5官方Demo解析集4——Blocking Fortune Client
- QT实现CSDN上传资源管理助手Demo之(2)模拟登录CSDN网站
- qt实现火苗跟踪指针效果Demo
- opencv3例程--摄像机标定用qt实现
- QT QNetworkAccessManager demo
- Qt用TCP和QCamera实现监控系统Demo
- Qt用QuaZip实现压缩/解压的小Demo
- 【C/C++学院】0822-类型转换函数与构造转换函数/类的继承/类的继承以及区别/继承静态成员与静态函数//继承实现代码重用/单继承QT案例/多继承简介以及实战/Gpu编程
- 一种基于Qt的可伸缩的全异步C/S架构服务器实现(六) 整合各个模块实现功能
- QT实现CSDN上传资源管理助手Demo之(1)抓包分析HTTP协议
- Qt实现探测当前有没有网络连接(Wi-Fi)——QNetworkConfigurationManager.isOnline()
- Qt5官方Demo解析集1——Fortune Server/Client
- QtNetwork用法(二)之使用QT实现360的ctrl+ctrl功能
- Qt学习 -- Qt采用设计器Qt Designer与 代码实现的区别
- QT实现CSDN上传资源管理助手Demo之(4)请求网络图片SVG并显示
- 使用qt内部数值动画实现弹簧效果的探索及属性带有{}和没有{}的区别
- QT实现CSDN上传资源管理助手Demo之(3)请求上传资源页面并解析
- Qt通过QNetworkAccessManager实现Http get方法文件下载