如何使用 ZeroMQ 接收多部分消息?

mah*_*nya 7 c++ zeromq

我无法使用 ZeroMQ C++ 包装器来接收多部分消息。使用 C 版本的相同代码工作得很好,但它会导致一个异常,而 C++ 根本没有解释。多部分处理代码如下:

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

    while(true) {
        // the following two lines lead to exception
        zmq::message_t request;
        socket.recv(&request);

        //zmq_msg_t message;
        //zmq_msg_init (&message);
        //zmq_recv (socket, &message, 0);   
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它非常简单;这个版本不行。但是如果我注释掉 while 循环中的前两行并取消注释当前注释的(C 版本)代码,它就可以工作。这是 Windows XP sp3、Zeromq 2.1.1 和 Visual Studio 2010 Express。

如果我发送单部分消息,两个版本都可以正常工作。我究竟做错了什么?

mah*_*nya -1

我决定使用 C 版本的代码。一般来说,所有的例子似乎都是用 C 语言编写的。