1

我已经设置了一个简单的 C++ PUB 和 python SUB,打算最终将 C++ 端构建为一个简单的 DLL。我之前有一些在两边都使用 python 进行类似设置的经验,没有问题。然而,我是一个完全的 C++ 菜鸟。

我的 C++ 代码:

#define ZMQ_EXPORT

#include "stdafx.h"
#include "zmq.hpp"

int _tmain(int argc, _TCHAR* argv[]) {
    zmq::context_t context(1);
    zmq::socket_t publisher(context, ZMQ_PUB);
    publisher.bind("tcp://*:6666");

    zmq::message_t message(5);
    memcpy(message.data(), "Hello", 5);

    while(true) {
        Sleep(500);
        publisher.send(message);
    }

    return 0;
}

recv_multipart() 上的 python SUB 脚本的结果:

['']

我相信它可以正常工作,尽管我认为我执行 memcpy 的方式存在缺陷。

4

1 回答 1

3

我在想你错过了 pub/sub 的整个“订阅”部分

您需要为 PUB 消息提供某种消息过滤器。这也意味着您的 SUB 需要这样做setsockopt才能接收消息。

您给出的示例表明您实际上没有针对您的 PUB 消息的消息过滤器(或者更确切地说,您的“Hello”是您的消息过滤器,并且数据消息实际上是一个空字符串)。

于 2012-09-14T11:35:17.917 回答