[寒江孤叶丶的Cocos2d-x之旅_29]在Cocos2d-x中集成protobuf (Protocol Buffers)

[寒江孤叶丶的Cocos2d-x之旅_29]在Cocos2d-x中集成protobuf (Protocol Buffers),第1张

概述原创文章,欢迎转载,转载请注明:文章来自[寒江孤叶丶的Cocos2d-x之旅系列] 博客地址:http://blog.csdn.net/qq446569365 1.什么是Protobuf? 数据传输格式有很多种最常见XML和Json,这两种格式生成速度非常快,但是解析的效率却很低。尤其在数据量非常大的情况下,会卡住好半天。并且这种格式的传输也会使得传输所耗费流量变大。解析效率最高,传输消耗流量最小

原创文章,欢迎转载,转载请注明:文章来自[寒江孤叶丶的Cocos2d-x之旅系列]

博客地址:http://blog.csdn.net/qq446569365

1.什么是Protobuf?

数据传输格式有很多种最常见XML和Json,这两种格式生成速度非常快,但是解析的效率却很低。尤其在数据量非常大的情况下,会卡住好半天。并且这种格式的传输也会使得传输所耗费流量变大。解析效率最高,传输消耗流量最小的数据格式自然是Buffer。很多公司都封装过自己的Buffer流传输的模块。

伟大的谷歌殿下将他们封装的Buffer流模块给贡献出来了!撒花~鼓掌~

也就是我这里所提到的Protobuf。传送门:https://github.com/Google/protobuf

2.如何安装Protobuf

Protobuf的安装是比较复杂的,但是有位伟大的作者,将他封装成了一个傻瓜式 *** 作,从下载到配置一气呵成!

https://gist.github.com/BennettSmith/7150245 打开大神的git,点击右边的Download Gist,进行下载,下载解压后,得到一个build-protobuf-2.5.0.sh文件,直接将他拖到终端里,按下回车!


然后界面会疯狂的滚动,直到你看到了一个绿色的Done!


这就大功告成了!所生成的文件在哪儿呢?

/Users/archerpeng/protobuf

其中archerpeng是我的用户名,替换成你自己的!(下不赘述)

里边共有三个文件夹。

bin 是用来生成.h和.cc的编译器(后详述)

include 是头文件(们),到时候要加入到项目头文件搜索路径

lib 是库文件。到时候也要引用进项目中

3.如何安装使用编译器生成文件?

首先要写一个proto文件(不妨叫helloworld.proto),在该文件中添加一个名为"helloworld"的message结构,用来描述通讯协议中的结构化数据。该文件的内容如下

 message helloworld  {     required int32     ID = 1;  // ID     required string    str = 2;  // str     optional int32     opt = 3;  //optional fIEld  }

下边就要调用之前所说的bin目录里边的编译器了,在终端里输入
/Users/archerpeng/protobuf/bin/protoc --proto_path=/Users/archerpeng/protobuf/include  --cpp_out=/Users/archerpeng/Downloads/protobuf-master/src /Users/archerpeng/src/helloworld.proto 

按回车就可以了。

上边的有点长,简单的说
上边所说的bin的路径/protoc --proto_path=include文件的路径 --cpp_out=CPP文件输出保存的路径 .proto文件所在路径/helloworld.proto

这时,能看到自动编译出来两个文件


然后将这俩文件 以及刚刚那个proto都放到 Cocos2d项目的class文件下,并将其导入项目

4.Xcode 的配置!

首先将之前所提到的lib目录中的libprotobuf.a导入项目


紧接着,添加头文件搜索路径:


就是刚刚那个include路径!

然后……编译!

5.简单使用实例:

    helloworld hw;    hw.set_ID(12);    hw.set_opt(123);    hw.set_str("ArcherPeng");    std::string str=hw.SerializeAsstring();    //最好在这里再对Str进行一层加密  然后发出去            //这里接受到str    std::string recStr = str;    helloworld hwOut;    if(hwOut.ParseFromString(recStr)) // 解析该字符串    {        cclOG("hwOut : %d  %d  %s",hwOut.ID(),hwOut.opt(),hwOut.str().c_str());    }<span ></span>
运行结果:

hwOut : 12 123 ArcherPeng

这样就成功了!

这里有lua版的:https://github.com/clouDWu/pbc/tree/master/binding/lua

改天看看怎么用这个lua版本的……

总结

以上是内存溢出为你收集整理的[寒江孤叶丶的Cocos2d-x之旅_29]在Cocos2d-x中集成protobuf (Protocol Buffers)全部内容,希望文章能够帮你解决[寒江孤叶丶的Cocos2d-x之旅_29]在Cocos2d-x中集成protobuf (Protocol Buffers)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1054107.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存