Qt/E客户端服务期间通信--数据串行化

简介: 转载请注明出处: http://www.cnblogs.com/baizx/ Qt是采用C++编写,因此其面向程序员的基本数据结构都是类,而类的数据存储不是连续的,很可能是分散的,因此要在进程之间传递,必须将其串行化,当接收进城收到数据时,在对这些数据进行解析,然后构造可以直接访问的类实例,称之为反串行化。
+关注继续查看
转载请注明出处:
http://www.cnblogs.com/baizx/
Qt是采用C++编写,因此其面向程序员的基本数据结构都是类,而类的数据存储不是连续的,很可能是分散的,因此要在进程之间传递,必须将其串行化,当接收进城收到数据时,在对这些数据进行解析,然后构造可以直接访问的类实例,称之为反串行化。
负责串行化的类为: QWSProtocolItem

struct QWSProtocolItem

{

    QWSProtocolItem(int t, int len, char *ptr) : type(t),

        simpleLen(len), rawLen(-1), deleteRaw(false), simpleDataPtr(ptr),

        rawDataPtr(0), bytesRead(0) { }

    virtual ~QWSProtocolItem();

    // data

    int type;int simpleLen;int rawLen;

    bool deleteRaw;

……

    char *simpleDataPtr;char *rawDataPtr;

int bytesRead;

void write(QIODevice *s);

    bool read(QIODevice *s);

};



Qt服务器客户端通信的消息都继承与该类,可以看到主要数据成员有 type,simpleLen,simpleDAtaPtr,另外还有rawDataPtr,我们就暂时不分析了,因为和simpleDataPtr处理起来是一样的。
要通过网络发送的数据必须是一个字节序列,并且要有长度,这个很自然。type是一个最关键的数据,有了type,就可以知道这是什么消息,这样才能进行解析。从网络上发送的消息体结构如下:
              
其中 RawData部分大部分情况下都不使用,只有SimpleData部分。QWSProtocolItem提供了读写函数来将这些数据进行组合成如上的消息体发送或者从网络读取。

 

目录
相关文章
|
10月前
|
C++
qt开发从入门到实战1
qt开发从入门到实战1
148 1
qt开发从入门到实战1
|
11月前
|
区块链 开发工具 C语言
教你用Qt开发一个串口上位机控制LED
教你用Qt开发一个串口上位机控制LED
509 0
教你用Qt开发一个串口上位机控制LED
|
12月前
|
JavaScript 大数据
Qt+ECharts开发笔记(五):ECharts的动态排序柱状图介绍、基础使用和Qt封装Demo
上一篇的demo使用隐藏js代码的方式,实现了一个饼图的基本交互方式,并预留了Qt模块对外的基础接口。   本篇的demo实现了自动排序的柱状图,实现了一个自动排序柱状图的基本交互方式,即Qt调用js脚本操作html。   本篇demo使用Qt定时器方式,实现数据定时刷新自增,并预留出了定时器间隔参数。   像大数据网页常看的人口增长时间图,收入年度增长时间图等都是这一类。
Qt+ECharts开发笔记(五):ECharts的动态排序柱状图介绍、基础使用和Qt封装Demo
|
JavaScript
Qt+ECharts开发笔记(四):ECharts的饼图介绍、基础使用和Qt封装百分比图Demo
前一篇介绍了横向柱图图。本篇将介绍基础饼图使用,并将其封装一层Qt。本篇的demo使用隐藏js代码的方式,实现了一个饼图的基本交互方式,并预留了Qt模块对外的基础接口。
Qt+ECharts开发笔记(四):ECharts的饼图介绍、基础使用和Qt封装百分比图Demo
|
缓存 API
Qt 5——使用http协议通信
Qt 5——使用http协议通信
317 0
|
网络协议
Qt-网络与通信-TCP版本聊天程序
Qt-网络与通信-TCP版本聊天程序
80 0
Qt-网络与通信-TCP版本聊天程序
|
C++
Qt-网络与通信-UDP网络通讯
Qt-网络与通信-UDP网络通讯
146 0
Qt-网络与通信-UDP网络通讯
|
C++
Qt-网络与通信-获取本机网络信息
Qt-网络与通信-获取本机网络信息
88 0
Qt-网络与通信-获取本机网络信息
|
C++
【C/C++学院】(20)QT:udp通信
<p><span style="color:rgb(44,44,44); font-family:SimSun; font-size:20px; line-height:20px; text-align:center"><strong>基于QT的UDP协议的通信</strong></span></p> <p></p> <pre code_snippet_id="611440" snip
1368 0