之前给出了都是google提供的一些样例,但是protobuf提供的是数据的序列化和反序列化,显然在cs架构中非常适用,适用protobuf可以大大减小编程者对于通信双方格式的定义与解析,只用关系用户的逻辑功能即可。
下面拿一个简单的cs架构中双方心跳包的检测进行举例说明:
1、定义protubuf心跳包的数据结构类型
//Test.proto
package Test.protobuf ;//包名:在生成对应的C++文件时,将被替换为名称空间,在代码中会有体现
option optimize_for = SPEED ;//文件级别的选项,Protobuf优化级别
//心跳信息数据结构
message HeartInfo
{
required int32 curtime = 1;
required string hostip = 2 ;
};
2、编译产生头文件
protoc -I=./ --cpp_out=./ ./Test.proto
结果如下:
3、定义客户端通信代码
#include <iostream>
#include <string>
#include <ctime>
//for protobuf
#include "Test.pb.h"
//for socket
#include <stdio.h>
#include <sys/types.h>
#include <