【问题标题】:ZeroMQ: Python Server to C++ ClientZeroMQ:Python 服务器到 C++ 客户端
【发布时间】:2021-11-04 05:20:47
【问题描述】:

目前正在开发一个 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++ 服务器对其进行测试,代码略有不同)但在这里不起作用。到目前为止隔离程序以确定问题来自此代码块。

【问题讨论】:

    标签: python c++ zeromq pyzmq


    【解决方案1】:

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

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

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

    REP-side 跳舞 Listen-Reply-Listen-Reply-Listen-...

    【讨论】:

      猜你喜欢
      • 2011-08-04
      • 1970-01-01
      • 2019-02-26
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      • 2014-09-08
      相关资源
      最近更新 更多