参考:
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反射机制。