美文网首页
Protocol Buffer

Protocol Buffer

作者: fooliker | 来源:发表于2017-05-04 16:19 被阅读0次

    目前市面上的unity手游开发主流数据通讯协议的解决方案。

    数据通讯格式。

    protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,其最大的特点是基于二进制,

    因此比传统的 XML表示高效短小得多。虽然是二进制数据格式,但并没有因此变得复杂,开发人员通过按照一定的语法

    定义结构化的消息格式,然后送给命令行工具,工具将自 动生成相关的类,可以支持java、c++、python等语言环境。(注意原生不支持C#)

    通过将这些类包含在项目中,可以很轻松的调用相关方法来完成业务消息的序列化与反序 列化工作。

    ProtoBuf

    基本语法

    1.定义消息 message 关键字

    message c2s_login_game_request{

    required string name = 1;

    required string password = 2;

    1和2不是赋值 是分配标识号

    }

    2.分配标识号

    <1>每个字段都有唯一的标识号。这些消息是用来在消息的二进制格式中识别各个字段的,一旦开始使用就不能在修改。

    <2>最小的标示号可以从1开始,最大到2^229

    <3>不可使用其中的[19000 -19999]的标识号

    3.required(表示该值必须要设置)

    4.optional(消息格式中该字段可以有0个或1个值 - 不超过1个)

    5.repeated(重复的值的顺序会被保留,表示该值可以重复,相当于从c# list)

    6.proto文件可以添加注释

    7.导入定义如果想要使用的消息类型已经在其他.proto文件中已经定义过

    你可以通过导入其他的.proto文件中的定义来使用它们。

    写法如下:

    import "myproject/other_protos.proto";

    8.嵌套类型

    你可以在其他消息类型中定义、使用消息类型,在下面的例子中,ItemInfo消息结构就定义在GetSelfItem_Response消息结构内,如:

    message GetSelfItem_Response

    {

    message ItemInfo

    {

    required uint32 ItemID = 1;//道具ID

    required uint64 ItemCount = 2;//数量

    optional string property = 3;//属性

    }

    repeated ItemInfo Item = 1;

    }

    9。package+命名空间名

    相关文章

      网友评论

          本文标题:Protocol Buffer

          本文链接:https://www.haomeiwen.com/subject/ymqdtxtx.html