概述
Protobuf消息定义
消息由至少一个字段组合而成,类似于C语言中的结构。每个字段都有一定的格式。
- 字段格式:限定修饰符① | 数据类型② | 字段名称③ | = | 字段编码值④ | [字段默认值⑤]
- 限定修饰符包含 requiredoptionalrepeated
Required: 表示是一个必须字段,必须相对于发送方,在发送消息之前必须设置该字段的值,对于接收方,必须能够识别该字段的意思。发送之前没有设置required字段或者无法识别required字段都会引发编解码异常,导致消息被丢弃。
Optional: 表示是一个可选字段,可选对于发送方,在发送消息时,可以有选择性的设置或者不设置该字段的值。对于接收方,如果能够识别可选字段就进行相应的处理,如果无法识别,则忽略该字段,消息中的其它字段正常处理。—因为optional字段的特性,很多接口在升级版本中都把后来添加的字段都统一的设置为optional字段,这样老的版本无需升级程序也可以正常的与新的软件进行通信,只不过新的字段无法识别而已,因为并不是每个节点都需要新的功能,因此可以做到按需升级和平滑过渡。
Repeated: 表示该字段可以包含0~N个元素。其特性和optional一样,但是每一次可以包含多个值。可以看作是在传递一个数组的值。
以下是一个protobuf文件:
package ProtoCmd;
import "PublicMsg.proto";
import "PublicDefine.proto";
message ReqQueryIoRankCmd
{
required uint32 rank_type = 1; //注释
repeated uint32 player_id_list = 2;
}
message AnsQueryIoRankCmd
{
required uint32 ret = 1;
optional uint32 rank_type = 2;
optional PlayerGrading rank_list = 3;
}
message NoticePlayerRankInfo
{
optional PlayerGrading rank_info = 1;
}
message ReqAchiveRewardCmd
{
optional uint32 task_id = 1;
}
message AnsAchiveRewardCmd
{
required uint32 ret = 1;
optional uint32 task_id = 2;
}
message NoticePlayIoTaskInfo
{
optional PlayIoTaskInfo io_task_info = 1;
}
最后
以上就是孝顺纸鹤为你收集整理的Protobuf语法格式学习的全部内容,希望文章能够帮你解决Protobuf语法格式学习所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复