2016-11-24 148 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