c ++网络序列化

kob*_*eir 5 c++ serialization protocol-buffers ace boost-serialization

我正在寻找一种将c ++数据包序列化到网络流的解决方案.

我在这里看到很多帖子引用人们:

  1. 高手

  2. Google协议缓冲区

  3. 升压::序列化

  4. Qt :: QDataStream

我的要求/限制:

  1. 解决方案必须是不知道LitteEndian/BigEndian.机器架构x86/x64和平台无关.

  2. 前3个解决方案的占地面积(RAM和ROM)对我的平台来说太大了,第四个解决方案与下一个要求相冲突.

  3. 该解决方案不需要大量的样板代码(将有200多个数据包被序列化).

谢谢,Koby Meir

Zul*_*jin 13

如果您发现Google协议缓冲区很重(我可以同意这一点,因为编译的库可能需要超过1 MB),您可以尝试使用简单版本的protobuf.可以通过插入以下行在*.proto文件中启用它

option optimize_for = LITE_RUNTIME;
Run Code Online (Sandbox Code Playgroud)

但是如果你需要一个具有最小开销的protobuf解决方案,我会使用protobuf-c,
这是protobuf的C实现.使用起来会有点困难,但二进制代码大小开销应该是最小的(30-50 KB).我知道这个C实现是由umurmur使用的 - 一个在嵌入式Linux ARM和MIPS路由器上运行良好的语音服务器.