【问题标题】:Zero MQ publisher subscriber (pub/sub)Zeromq 发布者订阅者(发布/订阅)
【发布时间】:2025-06-17 07:20:01
【问题描述】:

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

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);

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

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

【问题讨论】:

    标签: c++ zeromq publish publish-subscribe


    【解决方案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

    【讨论】: