![](/img/trans.png)
[英]Zeromq : How to send message longer than 30 character from python client to c++ server
[英]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.