从protobuf实例理解原理以及Varint编码

protobuf实例

通过一个注册登录的例子,熟悉一下如何使用protobuf将数据传输给服务端。

登录信息包括5个数据:

  • user_name
  • password
  • online_status
  • client_type
  • client_version
  1. 编写proto文件如下,将登录的数据结构放在message 字段。message 是一个关键字,后面跟上自定义的消息名称,如IMLoginReq:
syntax = "proto3"; // proto2和proto3 版本
package IM.Login;	//IM::Login -> package IM.Login   类似于命名空间
import "IM.BaseDefine.proto";	// 引用文件 引用其他的proto文件

option optimize_for = LITE_RUNTIME;  //编译优化
//IMLoginReq:描述的一个类
message IMLoginReq{
   
	//cmd id:		0x0103
	string user_name = 1;
	string password = 2;
	IM.BaseDefine.UserStatType online_status = 3;
	IM.BaseDefine.ClientType client_type = 4;
	string client_version = 5;
}

注意:后面的字段编号,需要按照顺序从1开始规则定义,最小编号是 1,最大的是 2^29 -1即536,870,911,其中 19000 到 19999不能使用(内定为Protocol Buffers使用)。

  1. 客户端和服务端都会保存这个proto文件。并且通过protoc编译
protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/xxx.proto

将上面的proto文件生成.cc和.h文件,生成的文件中有一些接口之后需要使用到。

  1. 客户端设置message类中的相关信息,设置IMLoginReq中5个类型的数据如下所示:
// 设置登录信息
IM::Login::IMLoginReq msg;
msg.set_user_name("liaoqingfu");
msg.set_password("123456")
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值