[置顶] 使用protobuff 进行网络序列化和反序列传输实例
2017-03-15 17:22
501 查看
首先我认为这个文章的读者应该是已经知道protobuff 是什么东西 该怎么用,为什么用,也就是 what how why。如果你真的不知道,可以先去搜索引擎上读几篇他的介绍,如果可以翻墙去谷歌上读读英文文章更好。了解完protobuff后下来我就来点干货,也就是protobuff在网络传输中序列化和反序列的使用。虽然是一个很简单的例子,但是希望你可以从中找到入门开始使用protobuff的灵感。那么我们开始吧。。。。。。
直接上代码: 我这里是使用c++进行例子的编写,其实protobuff也支持java和python 原理雷同,这里就不写了
首先是msg.proto
之后我们 protoc --cpp_out=. msg.proto
使用protoc 编译器生成对应的msg.pb.h和msg.pb.cc文件
下来我们就要编写自己的代码了:
protobuff_demo.cc文件
下来给大家一个链接是ProtoBuf 常用序列化/反序列化API
http://blog.csdn.net/sealyao/article/details/6940245
直接上代码: 我这里是使用c++进行例子的编写,其实protobuff也支持java和python 原理雷同,这里就不写了
首先是msg.proto
package demo; message msg { required int32 msgtype=1; required string msginfo=2; required string msgfrom=3; optional string opt=4; //can select }
之后我们 protoc --cpp_out=. msg.proto
使用protoc 编译器生成对应的msg.pb.h和msg.pb.cc文件
下来我们就要编写自己的代码了:
protobuff_demo.cc文件
#include"msg.pb.h" #include<iostream> #include<string> using namespace std; int main(int argc,char *argv[]) { demo::msg writer; writer.set_msgtype(1); writer.set_msginfo("i am weeks"); writer.set_msgfrom("127.0.0.1"); //C++string序列化和序列化API //客户端格式化信息 string in_data; writer.SerializeToString(&in_data); //下面用一个临时的string 表示在网络中进行传输的过程 //真是的过程中你可以借助相应的网络框架对数据进行传输 //客户端将数据放到网络上 string tmp=in_data; //服务端从网络上拿数据 string out_data=tmp; //服务端反格式化信息 demo::msg reader; reader.ParseFromString(out_data); cout<<"msg_type: "<<reader.msgtype()<<endl; cout<<"msg_info: "<<reader.msginfo()<<endl; cout<<"msg_from: "<<reader.msgfrom()<<endl; return 0; }之后用g++将 msg.pb.cc文件 和protobuff_demo.cc文件生成一个可执行文件就可以了。
下来给大家一个链接是ProtoBuf 常用序列化/反序列化API
http://blog.csdn.net/sealyao/article/details/6940245
相关文章推荐
- spring-data-redis 使用 protobuf进行序列化和反序列
- C#使用Protocol Buffer(ProtoBuf)进行对象的序列化与反序列化
- Beetle使用Protobuf.net进行对象序列化传输
- .Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--使用封装的网络服务2
- .Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--使用封装的网络服务1[使用IE浏览本页]
- 【python系列】使用pickle进行数据的序列和反序列化
- 【protobuf】 3.使用protobuf-csharp-port进行序列化和反序列化
- [置顶] Volley框架进行请求网络数据的使用
- unity3d中使用proto对象进行序列化和反序列化
- 使用Java来实现网络传输数据压缩的实例
- JAVA 中进行网络通信时,通信的程序两端要传输的对象,不仅要序列化,而且这个对象所属的类的名字要完全一样,连包的名字都得一样
- 在android需要大量使用xml进行网络传输时,如何用面向对象的思路降低xml的耦合性并增加重用性
- .Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--类设计1[使用IE浏览本页]
- .Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--使用封装的网络服务3[聊天室][使用IE浏览本页]
- C# 使用 protobuf 进行对象序列化与反序列化
- 减小网络传输图片大小,使用gzip进行压缩
- .Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--类设计2[使用IE浏览本页]
- 使用VFS进行SFTP网络传输----转载
- Unity使用protobuf-net进行二进制序列化与反序列化
- Java使用udp传输方式进行网络通信