我在c++
(使用zhelpers.hpp
)和python3 ZeroMQ订户的ZeroMQ发布者(使用pyzmq
)。ZMQ蟒发布C++订阅
问题是,用户没有收到消息。我想,ZeroMQ过滤器存在问题。我无法弄清楚,如何正确使用.setsockopt()
中的c++
来收回来自python发布者的消息。
Python的出版商:
import zmq
context = zmq.Context()
socket = context.socket(zmq.PUB)
context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:4004")
while True:
command = input("insert command ")
if (command=='c'):
topic = "CALL".encode("ascii")
data = "blabla".encode("ascii")
socket.send_multipart([topic,data])
C++
用户:
#include "zhelpers.hpp"
zmq::context_t context(1);
zmq::socket_t subscriber1 (context, ZMQ_SUB);
subscriber1.connect("tcp://127.0.0.1:4004");
subscriber1.setsockopt(ZMQ_SUBSCRIBE, "CALL", 4);
while (1) {
// read envelope
std::string address = s_recv (subscriber1);
// read message
std::string contents = s_recv (subscriber1);
std::cout << "[" << address << "] " << contents << std::endl;
Python的订户workking罚款。代码:
subscriber = context.socket(zmq.SUB)
subscriber.connect("tcp://127.0.0.1:4004")
subscriber.setsockopt(zmq.SUBSCRIBE, b"CALL")
[command, contents] = self.subscriber.recv_multipart()
您能否确认'py3'和'C++'是否使用相同版本的ZeroMQ API规范?最近在消息头大小/映射中的移动可能会使旧版本的'C++'绑定行为失效。 – user3666197
是的,你说得对,版本不匹配。 –
**很高兴帮助**。随意访问**享受**其他**'ZeroMQ'答案** >>> http://stackoverflow.com/search?tab=votes&q=user%3a3666197%20%5bzeromq%5d – user3666197