零MQ发布者订阅者(pub / sub)

时间:2016-11-24 14:08:40

标签: c++ zeromq publish publish-subscribe

我已经实现了一个简单的pub / sub示例。我发送一条简单的问候消息并尝试在订阅者处接收它。 我的发布商代码是 -

std::string msg = "hello,";
zmq::message_t message(static_cast<const void*> (msg.data()), msg.size());
publisher.send(message);

我的订阅者代码 -

zmq::message_t msgReceive;
subscriber.recv(&msgReceive);   
const char* buffer_body = static_cast<const char*>(msgReceive.data());
printf("Message: %s\n",buffer_body);

我得到的输出是 - “你好,Socket-Type” 而不是“你好”,

我无法弄清楚错误在哪里。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:1)

尝试更改此行

const char* buffer_body = static_cast<const char*>(msgReceive.data());

const char* buffer_body = static_cast<const char*>(msgReceive.data(), msgReceive.size());

这样你可以根据消息的长度告诉C_String在哪里终止,而不是在找到第一个空字符时让它自己终止。

有关详细信息,请参阅the guide