缓冲区的关键是: 字符串数据 和 类型数据 之间的相互转换。比如将char *的数据的按1byte 1 byte的读入转化为bool、char、uint8、int16、uint16、int32(相当于int),uint32、int64(相当于long long);当然还有double。
网络缓冲区分为发送端 和 接收端。发送端将类型数据 转换为 字符串数据。 接收端将字符数据 转换为 类型数据。
一、发送端
#ifndef SMPEnplexer_H
#define SMPEnplexer_H
#include "SMP_COMMAND.h"
class SMPEnplexer
{
public:
SMPEnplexer(unsigned bufsize=8192); //default is 8KB
~SMPEnplexer();
char* data() {return _data;};
unsigned length() {return _pos;};
void setLength(int pos){_pos += pos;};
void setBufferSize(int size);
unsigned buffersize(){return _bufSize;};
void reset();
void addHead();
// add a argument
void addBoolArg(bool value);
void addCharArg(char value);
void addUInt8Arg(unsigned char value);
void addInt16Arg(short value);
void addUInt16Arg(short value) { addInt16Arg(value); };
void addInt32Arg(int value);
void addUInt32Arg(unsigned value) { addInt32Arg(value); };
void addInt64Arg(long long int value);
void addUInt64Arg(long long unsigned value) { addInt64Arg(value); };
void addFloatArg(float value);
void addStringArg(const QString &value);
void addCharArray(char* str,int len);
PACKAGE_HEAD head;
protected:
unsigned _bufSize;
char *_data;
unsigned _pos;
QTextCodec* codec;
};
#endif // SMPEnplexer_H
二、接收端
接收端将字符串数据流 转换为 相应的类型数据。
#ifndef SMPDeplexer_H
#define SMPDeplexer_H
#include <qstring></qstring>
#include "SMP_COMMAND.h"
class SMPDeplexer
{
public:
SMPDeplexer(unsigned bufSize = 4096);
~SMPDeplexer();
char *data() {return _data;}
unsigned length() {return _length;}
void setLength(int len) {_length = len;}
unsigned buffersize() {return _bufSize;}
void setBufferSize(unsigned size);
void reset();
// demultiplex the next arg in the stream
bool boolArg();
char charArg();
unsigned char uint8Arg();
short int16Arg();
unsigned short uint16Arg() { return int16Arg(); }
int int32Arg();
unsigned uint32Arg() { return int32Arg(); }
long long int int64Arg();
long long unsigned uint64Arg() { return int64Arg(); }
void deplexHead();
void deplexCharArray(char* str,int len);
char *_data;
unsigned _pos;
unsigned _bufSize;
unsigned _length;
QTextCodec* codec;
PACKAGE_HEAD head;
};
#endif // SMPDeplexer_H
分享到:
相关推荐
基于Qt使用C++实现图书管理系统源码 基于Qt使用C++实现图书管理系统源码 基于Qt使用C++实现图书管理系统源码 基于Qt使用C++实现图书管理系统源码 基于Qt使用C++实现图书管理系统源码 基于Qt使用C++实现...
期末大作业C++课程设计基于Qt实现图书管理系统源码,VS开发。期末大作业C++课程设计基于Qt实现图书管理系统源码,VS开发。期末大作业C++课程设计基于Qt实现图书管理系统源码,VS开发。期末大作业C++课程设计基于Qt...
C++设计模式--基于Qt4开源跨平台开发框架
哈工大(威海)计算机科学与技术学院 软件设计程序II的实验报告,基于QT,C++实现的简单饮食健康助手小程序,具有一定的数据结构知识的构建。原作者,可私聊源码。
毕业设计,基于C++、QT的系统设计、开发,供参考,提供说明材料+源代码 毕业设计,基于C++、QT的系统设计、开发,供参考,提供说明材料+源代码 毕业设计,基于C++、QT的系统设计、开发,供参考,提供说明材料+源代码...
课设作业:基于QT C++实现的学生信息管理系统.zip 课设作业:基于QT C++实现的学生信息管理系统.zip 课设作业:基于QT C++实现的学生信息管理系统.zip 课设作业:基于QT C++实现的学生信息管理系统.zip 课设作业:...
c++游戏编程设计基于qt开发的一个简单雷霆战机小游戏源码.zip 一个基于qt的简单小游戏雷霆战机 wasd移动,enter发射子弹,看看你能拿多少分吧! c++游戏编程设计基于qt开发的一个简单雷霆战机小游戏源码.zip 一个...
期末大作业C++课程设计基于QT的赛车小游戏设计源码。玩家可通过键盘对赛车进行操控,开启精彩的游戏之旅,感受全新的体验。代码注释全,新手也可操作。 期末大作业C++课程设计基于QT的赛车小游戏设计源码。玩家可...
C++课程设计期末大作业基于QT的跑酷游戏源码。支持基本按键操作,还可进行攻击C++课程设计期末大作业基于QT的跑酷游戏源码。支持基本按键操作,还可进行攻击C++课程设计期末大作业基于QT的跑酷游戏源码。支持基本按键...
期末大作业课程设计基于C++的Qt框架开发的翻金币小游戏源码期末大作业课程设计基于C++的Qt框架开发的翻金币小游戏源码期末大作业课程设计基于C++的Qt框架开发的翻金币小游戏源码期末大作业课程设计基于C++的Qt框架...
C++设计模式——基于Qt4开源跨平台开发框架(2008修订版) Introduction to Design Patterns in C++ with Qt 4 (2008修订版) 作者: Alan Ezust 和 Paul Ezust 使用当今世界领先的开源跨平台开发环境Qt 4来一起掌握...
毕业设计,基于C++、QT的系统设计、开发,供参考,提供说明材料+源代码 毕业设计,基于C++、QT的系统设计、开发,供参考,提供说明材料+源代码 毕业设计,基于C++、QT的系统设计、开发,供参考,提供说明材料+源代码...
基于QT - SOCKET 的 C++ 实现矩阵压力数据采集及压力云图现实。 基于QT - SOCKET 的 C++ 实现矩阵压力数据采集及压力云图现实。 基于QT - SOCKET 的 C++ 实现矩阵压力数据采集及压力云图现实。 基于QT - SOCKET 的 ...
基于QT_C++嵌入式聊天系统设计与实现源码论文答辩ppt.zip
基于Qt和C++的医院信息管理系统(课程设计).zip 基于Qt和C++的医院信息管理系统(课程设计).zip 基于Qt和C++的医院信息管理系统(课程设计).zip 基于Qt和C++的医院信息管理系统(课程设计).zip 基于Qt和C++的...
基于Qt GUI c++ 开发的记账系统.zip基于Qt GUI c++ 开发的记账系统.zip 基于Qt GUI c++ 开发的记账系统.zip基于Qt GUI c++ 开发的记账系统.zip 基于Qt GUI c++ 开发的记账系统.zip基于Qt GUI c++ 开发的记账系统.zip...
现成控制软件,使用QT开发。用于工业控制,稍加改动就可以使用过。通讯,配置,曲线显示,log日志,json解析,UI使用qss加载等。
基于Qt4的C++课程设计,主要是一个简单的五子棋游戏,具有玩家对战以及人机对战两种模式,有完整源码,需要的可以私聊
毕业设计C++语言基于Qt的音视频播放器源码。界面友好,代码注释,新手也可自己操作,高手可以二次开发,高分必看 使用方法 1. 下载至本地,使用Qt打开项目(在Qt中打开CMakeLists.txt) 2. 然后先编译一次,在项目的...
C++基于Arm和Qt的智能车载系统源码。实现了天气预报、音乐播放器、视频播放器、倒车雷达、行车记录仪、多语言切换等功能。,利用Qt C++完成主要部分功能模块C++基于Arm和Qt的智能车载系统源码。实现了天气预报、音乐...