2016-11-24 109 views
0

我实现了一个简单的pub/sub示例。我正在发送一个简单的hello消息,并尝试在订户处接收它。 我的出版商的代码是 -零MQ发布者订阅者(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); 

我得到的输出是 - “你好,承插式” 而不是 “你好”,

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

回答

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