0

我正在寻找序列化一个向量以在 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++ 编程问题,应该已经为它开发了好的解决方案。

4

2 回答 2

1

您正在寻找的是一个通用的序列化库;有很多可用的选项

我特别喜欢两个:Google 的Protocol Buffers和 Apache 的Avro。您可以将其中任何一个与 ZMQ 一起使用。

如果您访问 ZMQ常见问题解答(转到“常规”部分),您会发现 Protocol Buffers 是上述代理的序列化格式之一。

于 2013-04-25T19:25:16.853 回答
1

我至少会考虑将Boost SerializationBoost gzip-filtered stream结合使用。

于 2013-04-25T19:32:44.557 回答