python - ZeroMQ:Python 服务器到 C++ 客户端
问题描述
目前正在开发一个 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
-channel 设置中)永远不会开始等待接收“答案”消息(通常来自REP
-peer,但没有在此之前询问并传递了一个“问题”消息)。代码挂起,等待永远不会以这种方式传递的答案。
一旦您修复代码以使REQ
-instance 首先“询问”,socket.send( aQuestionMESSAGE, zmq::send_flags::none);
在它“等待”之前,无论是轮询还是侦听(无论是使用非阻塞形式的阻塞),ZeroMQ 都会处理其余的- 原型中“交错”的两步舞REQ/REP
:在 -side
跳舞 Ask-Listen-Ask-Listen-Ask-Listen-... REQ
,
而在 -side
跳舞 Listen-Reply-Listen-Reply-Listen-...REP
一边_
推荐阅读
- c# - 通过字符串的所有部分获取带有输入的子字符串
- intel-mkl - mxnet-mkl CPU Intel(R) Xeon(R) CPU E5-26xx v4 中的浮点异常(核心转储)
- c++ - 函数指针给了我“重新声明为不同类型的符号”错误
- python - 读取文本文件值并将其分配给变量的每个值
- android - 无法在 android 模拟器中捕获对象,但在真实设备中也可以正常工作
- lit-html - 使用 lit-html 时如何指定事件处理程序?
- python - 如何在子集(切片)计算后更新原始数据框?
- reactjs - 使用 react js 删除列表中的特定项目
- mocha.js - Mocha 是否支持多个 before hook 来创建独立的 http 服务器?
- python - .get() 返回字母而不是字符串