ZeroMQ:Python 服务器到 C++ 客户端
Posted
技术标签:
【中文标题】ZeroMQ:Python 服务器到 C++ 客户端【英文标题】:ZeroMQ: Python Server to C++ Client 【发布时间】:2021-11-04 05:20:47 【问题描述】:目前正在开发一个 Python 到 ZMQ 程序;到目前为止,这就是我为 c++ 客户端所拥有的:
zmq::context_t context1;
zmq::socket_t socketcontext, 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++ 服务器对其进行测试,代码略有不同)但在这里不起作用。到目前为止隔离程序以确定问题来自此代码块。
【问题讨论】:
【参考方案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-...
【讨论】:
以上是关于ZeroMQ:Python 服务器到 C++ 客户端的主要内容,如果未能解决你的问题,请参考以下文章