protobuf反射机制

本文探讨了在网络编程中使用Google Protocol Buffers(Protobuf)时遇到的两个问题:数据长度切分和类型信息传递。通过在消息头添加长度信息以及利用protobuf的反射机制解决类型问题。接收端根据接收到的type_name和protobuf数据生成新的消息对象,进一步访问和处理数据。
摘要由CSDN通过智能技术生成

参考:
https://xiongjun.info/2016/02/16/mqueue4/
http://blog.csdn.net/solstice/article/details/6300108

1. 网络编程中使用protobuf的两个问题

Google Protocol Buffers (Protobuf) 是一款非常优秀的库,它定义了一种紧凑的可扩展二进制消息格式,特别适合网络数据传输。它为多种语言提供 binding,大大方便了分布式程序的开发,让系统不再局限于用某一种语言来编写。

在网络编程中使用 protobuf 需要解决两个问题:

  • 长度,protobuf 打包的数据没有自带长度信息或终结符,需要由应用程序自己在发生和接收的时候做正确的切分;
  • 类型,protobuf 打包的数据没有自带类型信息,需要由发送方把类型信息传给给接收方,接收方创建具体的 Protobuf Message 对象,再做的反序列化。

解决方法:
长度:在每个消息头添加固定长度的length header.
类型:protobuf 打包的数据没有自带类型信息。但Protobuf 对此有内建的支持,可以使用protobuf反射机制。

2. Protobuf传输格式

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值