<分区>
我正在寻找将 C++ 数据包序列化为网络流的解决方案。
我在这里看到很多帖子都提到了:
高手
Google Protocol Buffer
提升::序列化
Qt::QDataStream
我的要求/约束:
解决方案必须不知道 LitteEndian/BigEndian。机器架构 x86/x64 和平台无关。
前 3 个解决方案的占用空间(RAM 和 ROM)对我的平台来说太大,第四个与下一个要求冲突。
该解决方案不需要大量样板代码(将有 200 多个数据包需要序列化)。
谢谢,
科比梅尔
如果您发现 Google Protocol Buffers 太重(我同意这一点,因为编译后的库可能需要超过 1 MB),您可以尝试 lite version protobuf 的大小要小几倍。
可以通过插入以下行在 *.proto 文件中启用它
option optimize_for = LITE_RUNTIME;
但是如果你需要一个开销最小的 protobuf 解决方案,我会选择 protobuf-c ,
protobuf 的 C 实现。
使用起来会有点困难,但二进制代码大小开销应该是最小的 (30-50 KB)。我知道这个 C 实现例如被 umurmur 使用- 在嵌入式 Linux ARM 和 MIPS 路由器上运行良好的语音服务器。