繁体   English   中英

ZeroMQ:Python 服务器到 C++ 客户端

[英]ZeroMQ: Python Server to C++ Client

目前正在开发一个 Python 到 ZMQ 程序; 到目前为止,这是我为 c++ 客户端所拥有的:

    zmq::context_t context{1};
    zmq::socket_t socket{context, zmq::socket_type::req};
    socket.connect("tcp://IPADDRESSPLACEHOLDERTEXT:51000");
    const std::string data{"Message"};
     
    zmq::message_t reply{};
    socket.recv(reply, zmq::recv_flags::none);
    char CHAR[10];
    memcpy(CHAR, zmq_msg_data(&reply), 9);
    CHAR[10] = '\0';

    std::cout << “RESULT: " << CHAR << "," << std::endl;

    return 0;

但是,当我运行完整的 Qt 程序时,它会崩溃。 ZMQ 本身可以工作(使用 c++ 服务器对其进行测试,代码略有不同)但在这里不起作用。 到目前为止隔离程序以确定问题来自此代码块。

问: ...在这里不起作用

A :
是的,
它不能在这里工作。 ZeroMQ REQ -Scalable-Formal-Communications-Pattern 原型(通常“反对”其匹配的对应物,例如在REQ/REP通道设置中)永远不会开始等待接收“应答”消息(通常来自REP -peer ,但在此之前从未询问并传递过“问题”消息)。 代码挂起,等待永远不会以这种方式传递的答案。

一旦您修复代码以使REQ -instance 首先“询问”,使用socket.send( aQuestionMESSAGE, zmq::send_flags::none); ,在它“等待”之前,无论是轮询还是侦听(无论是使用非阻塞形式的阻塞),ZeroMQ 都会处理REQ/REP原型中其余的“交错”两步舞:
REQ跳舞 Ask-Listen-Ask-Listen-Ask-Listen-...,
然而
REP跳舞 Listen-Reply-Listen-Reply-Listen-...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM