ZMQ民意调查不起作用

时间:2013-05-07 22:54:58

标签: c++ zeromq

当我运行以下代码时,第一次调用zmq_poll时出错(即返回-1)。 zmq_errno()返回128zmr_strerror(128)调用返回"Unknown error"。我一直在使用ZMQ和C ++一段时间没有任何问题,但无论多么简单,我都无法调用zmq_poll来工作。

调用zmq::version表明我使用的是ZMQ 2.1.10版。

有没有人知道zmq_poll失败的原因?

#include <zmq/zmq.hpp>

int main(int argc, char* argv[])
{
    zmq::context_t context(1);
    zmq::socket_t repA(context, ZMQ_REP);
    zmq::socket_t repB(context, ZMQ_REP);
    repA.bind("tcp://127.0.0.1:5555");
    repB.bind("tcp://127.0.0.1:5556");
    zmq::pollitem_t items[] =
    {
        { &repA, 0, ZMQ_POLLIN, 0 },
        { &repB, 0, ZMQ_POLLIN, 0 }
    };
    while (true)
    {
        int rc = zmq_poll(items, 2, 1000);
        if (rc < 0)
        {
            int code = zmq_errno(); //code = 128
            auto message = zmq_strerror(code); //message = "Unknown error"
        }
    }
}

1 个答案:

答案 0 :(得分:7)

  

要获取用于zmq_pollitem_t结构的ØMQ套接字,您应该将socket_t类的实例强制转换为(void *)。

所以它应该是

zmq::pollitem_t items[] =
{
    { repA, 0, ZMQ_POLLIN, 0 },
    { repB, 0, ZMQ_POLLIN, 0 }
};

没有&