我希望序列化一个 vector 以在 zeromq 中作为消息发送。该结构将仅包含基本类型(bool、string、int、float)。
由于我是通过网络传输的,所以我想使用某种压缩方式来节省带宽。
我还希望它与平台无关。我将从 Linux 盒子进行广播,但接收者可以是 Windows 或 Linux。
第三方库也可以,只要它们可以在 Windows 和 Linux 下运行即可。
要发送 zeromq 消息,通常使用诸如 memcpy 之类的东西来“加载”数据。 http://api.zeromq.org/2-1:zmq-msg-data
有人可以指出适当的库并提供序列化/压缩和随后的反序列化/解压缩的简单示例代码吗?我想发送的结构如下所示:
struct sampledata {
string testing_text;
int testing_int;
float testing_number;
bool testing_bool;
}
我觉得这一定是一个常见的 C++ 编程问题,应该已经为它开发了很好的解决方案。
最佳答案
您正在寻找的是一个通用的序列化库; there are many available options .
我特别喜欢两个:Google 的 Protocol Buffers和 Apache 的 Avro .您可以将其中任何一个与 ZMQ 一起使用。
如果您访问 ZMQ FAQ (转到“常规”部分),您会发现 Protocol Buffers 是提到的代理序列化格式之一。
关于C++ 以独立于平台的方式序列化和压缩 vector<structs>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16222852/