记录:protobuf在网游中的用法(二)

在上一篇介绍的protobuf用法(http://blog.csdn.net/herm_lib/article/details/7384613),有点偏复杂了。可以简化一下。

结构: total_len[16] + head_len[8] + head + body。

这次像上一篇介绍最后介绍的一样,把head和body分开了,这样可以让服务器对消息的处理更灵活,有时候,服务器只要head内容,这样可以针对性地只解析head,而不用把body内容也解析出来。

头定义差不多像下面的样子:

package ProtoCS;

message Head

{

            required uint32 cmd_id = 1;

            。。。。。。。。

}

各种包体定义类似下面:

message GetRoleRes

{

             required uint64 id;

             required string name;

             。。。。。

}


message GetPetRes

{

             。。。。

}

和上一篇介绍区别很大,变简单了。

组织数据的过程的过程大体介绍一下:

1. 写入16bits的总长度,这里16bits考虑用网络字节序。

2. 写入8bits的头长度。

3. 写入头内容

        ProtoCS::Head head;

        。。。。

        head.SerializeToArray(buf + 3, bufSize - 3);

4. 最后写入包体内容

        ProtoCS::GetRoleRes roleRes;

        roleRes.set_id(111122233);

        roleRes.SerializeToArray(buf + 3 + headLen, bufSize - 3 - headLen);

把整个buf+totalLen发送出去就好了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值