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提供了读写函数来将这些数据进行组合成如上的消息体发送或者从网络读取。

 

目录
相关文章
|
6月前
|
存储 传感器 安全
【串口通信】使用C++和Qt设计和实现串口协议解析器(二)
【串口通信】使用C++和Qt设计和实现串口协议解析器
549 0
|
6月前
|
存储 开发框架 算法
【串口通信】使用C++和Qt设计和实现串口协议解析器(一)
【串口通信】使用C++和Qt设计和实现串口协议解析器
1506 0
|
6月前
|
运维 监控 网络协议
QT实现TCP通信:从基础到高级的全面解析
QT实现TCP通信:从基础到高级的全面解析
803 0
|
3月前
|
网络协议
【qt】TCP客户端信息的接受和发送
【qt】TCP客户端信息的接受和发送
34 0
|
3月前
|
网络协议
【qt】TCP客户端如何断开连接?
【qt】TCP客户端如何断开连接?
67 0
|
2月前
|
C语言 C++ Windows
QT多插件通信框架CTK编译记录
本文记录了编译QT多插件通信框架CTK的过程,包括编译结果截图、部署配置、Log4Qt编译配置、参考链接和拓展资料。文中提供了详细的编译步骤和配置文件示例,以及相关的资源链接。
QT多插件通信框架CTK编译记录
|
3月前
|
存储 C++
【C++】C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】
【C++】C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】
【C++】C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】
|
3月前
【qt】客户端连接到服务器
【qt】客户端连接到服务器
61 0
|
3月前
|
网络协议
【qt】TCP服务端发消息给客户端
【qt】TCP服务端发消息给客户端
33 0
|
4月前
基于QT实现的QQ聊天简易版(UDP通信版)
源码已经给小伙伴们整理好了,微信搜索 嵌入式工程之家 关注公众号回复 QQ 即可获得源码和详细操作指示哦~
105 0
下一篇
无影云桌面