我已经实现了一个简单的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” 而不是“你好”,
我无法弄清楚错误在哪里。任何帮助,将不胜感激。
答案 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。