当前位置: 首页 > news >正文

网站策划搭建方案宁波网站推广优化联系电话

网站策划搭建方案,宁波网站推广优化联系电话,打开有些网站显示建设中,广州公共资源交易中心官网本文首发于 慕雪的寒舍 以tcpServer的计算器服务为例#xff0c;实现用jsoncpp来进行序列化和反序列化 阅读本文之前#xff0c;请先阅读 自定义协议 | 序列化和反序列化 | 以tcpServer为例 1.安装jsoncpp 我所用的系统是centos7.6#xff0c;先用下面的命令查找相关的包 …本文首发于 慕雪的寒舍 以tcpServer的计算器服务为例实现用jsoncpp来进行序列化和反序列化 阅读本文之前请先阅读 自定义协议 | 序列化和反序列化 | 以tcpServer为例 1.安装jsoncpp 我所用的系统是centos7.6先用下面的命令查找相关的包 sudo yum list | grep jsoncpp-devel显示出来的包如下 Repository epel is listed more than once in the configuration jsoncpp-devel.x86_64 0.10.5-2.el7 epel 随后安装这个包 sudo yum install jsoncpp不知道为什么安装jsoncpp-devel.x86_64显示找不到相关包 或者采用下面的两个命令 sudo yum install epel-release sudo yum install jsoncpp-devel如果执行完毕后显示找不到jsoncpp尝试重新安装epel-release 刚开始我显示epel已经安装但是找不到jsoncpp这个包我在重新安装了epel后就能正常安装了 sudo yum rm epel-release sudo yum install epel-release sudo yum install jsoncpp-devel如下图正常查找到并安装完毕 在centos8下安装完毕后路径如下 $ ls /usr/include/json allocator.h assertions.h autolink.h config.h features.h forwards.h json.h reader.h value.h version.h writer.h1.1 什么是json json是一个kv键值对的序列化方式每一个key都对应了一个value {data: value }这就有点类似c中的map不过json能做的更多 {data1: value,data2: {key1:value1,key2:value2,key3:0,key4:true} }json可以在里面嵌套添加更多的内容不管是字符串还是整形还能是bool类型的true/false 因为json对反序列化序列化的控制很是不错可读性也很好所以被广泛使用 相比于自己写一个序列化方式直接用别人的轮子也不错 类似的序列化框架还有xml 2.代码示例 2.1 序列化 相比我们自己写的序列化方式json的使用简单多了 void serialize(std::string out) {//使用jsoncpp的代码Json::Value root;root[x] _x;root[y] _y;root[op] _ops;Json::FastWriter fw; // 这个是写成一行对于计算机来说处理的负担小// Json::StyledWriter fw; // 这个会进行格式化更好看但是内容没差距out fw.write(root); }对于fw.write(root)其返回值是一个string也方便我们接收 其中FastWriter和StyledWriter有一点区别如下 //FastWriter {data: value} //StyledWriter {data: value }简单来说StyledWriter会对我们的kv键值对进行格式化更方便人类的阅读。而FastWriter是直接写成一整行在传输的时候会方便一点因为不需要\n 2.2 反序列化 反序列化需要一个Reader来读取字符串并将其内容根据键值隐射给成员变量 bool deserialize(const std::string in) {//jsonJson::Value root;Json::Reader rd;rd.parse(in, root);_x root[x].asInt();_y root[y].asInt();_ops root[op].asInt(); }3.测试 因为jsoncpp是一个第三方库我们链接的时候需要加上命令-ljsoncpp tcpServer:tcpServer.cppg -o $ $^ -stdc11 -lpthread -ljsoncpp发送消息后可以看到json帮我们格式化为如下形式的字符串 {op:43,x:1,y:200} {op:43,x:333,y:234}4.gcc给予宏定义 为了方便对序列化采用的方式进行控制这里我使用了预处理指令ifdef/endif来进行判断只要我们在文件头定义了MYPROTOCOL这里就会采用我们自己的写的序列化方式否则采用json #define MYPROTOCOL 1 //如果define了这个那就使用自己的代码4.1 命令行 但是在文件里面修改define还是不太方便我们可以直接采用gcc的命令行参数的方式进行define的插入这么做之前要先删除文件中对MYPROTOCOL的define g -DMYPROTOCOL tcpServer.cpp -o tcpServer -lpthread -ljsoncpp g -DMYPROTOCOL tcpClient.cpp -o tcpClient -lpthread -ljsoncpp可以看到不加编译指令编译出来的服务器采用的是json的方式来序列化 添加了之后就是用我们自己写的序列化方式来序列化了 4.2 makefile 因此我们可以修改makefile来实现这一点 .PHONY:all all:tcpClient tcpServer MYSELF-DMYPROTOCOLtcpClient: tcpClient.cppg $(MYSELF) -o $ $^ -stdc11 -lpthread -ljsoncpp tcpServer:tcpServer.cppg $(MYSELF) -o $ $^ -stdc11 -lpthread -ljsoncpp.PHONY:clean clean:rm -f tcpClient tcpServer当我们需要用自己协议的时候就在最前面加上 MYSELF-DMYPROTOCOL否则直接删除这个定义或者注释掉后面的内容就能采用jsoncpp MYSELF#-DMYPROTOCOL这样就方便一些了
http://www.dnsts.com.cn/news/244563.html

相关文章:

  • 自助建站免费申请株洲新区发布
  • 江苏常州网站建设公司嘉兴网站建设系统
  • 无锡网站建设专家无锡网站制作网站设计建设公司
  • 昆明网站设计能实现什么功能洛宁网站建设
  • 山东做网站公司有哪些首都在线
  • 网站建设 风险防控镜像网站如何做排名
  • 做教育机构网站黄石公司网站建设
  • 邢台做网站建设优化制作公司金信广告优化师发展前景
  • 男女做污视频在线观看网站网络实施方案
  • 电子商务网站开发流程绿园区住房和城乡建设局网站
  • 南昌企业网站开发公司建立视频网站
  • 深圳正规网站建设服务wordpress 视频 去广告插件
  • 国内做免费视频网站有哪些专业的徐州网站开发
  • 如何提高网站点击量台州自助建站
  • 乌海市建设工程网站wordpress文章推荐
  • 教学资源网站建设设计用户体验的重要性
  • 网站建设百度认证图片巩义网站推广优化
  • 网站的大量图片存储格式怎么用editplus做网站
  • 免费网站建设官网wordpress 最新 热门 随机 切换
  • 南阳做网站推广网站如何做快捷支付
  • 购物网站 开店lookae素材网
  • 中国优秀企业网站欣赏焦作 做 网站
  • 企业产品展示网站模板各电商网站的特点
  • 自适应型网站建设方案宁波商城网站建设
  • 查询网站域名备案珍珠设计制作培训
  • 做综合医院网站英德市建设局网站
  • 有了代刷网的源码怎么做网站典当行网站模板
  • 资金盘网站开发价格开发公司退房款代理词
  • 怎么做微信点击网站打赏看片免费奖励自己的网站
  • 专项培训网站建设方案重庆市沙坪坝区