【发布时间】:2016-12-14 03:20:12
【问题描述】:
我是 ZMQ 的新手,并且已经完成了有关发布订阅模式的教程。但对于我的应用程序,它们并不完全适用。我有两种类型的应用程序。应用程序一可以通过网络创建到多个“应用程序二”的连接并向它们发送数据。
我尝试使用发布/订阅模式来实现这一点,但不是订阅者连接到发布者,而是发布者连接到订阅者。
出版商:
zmq::context_t context(1);
zmq::socket_t socket(context, ZMQ_PUB);
socket.connect("tcp://localhost:5555");
std::string text = "Hello World";
zmq::message_t message(text.size());
memcpy(message.data(), text.c_str(), text.size());
socket.send(message);
订阅者:
zmq::context_t context(1);
zmq::socket_t socket(context, ZMQ_SUB);
socket.bind("tcp://*:5555");
const char* filter = "Hello ";
socket.setsockopt(ZMQ_SUBSCRIBE, filter, strlen(filter));
zmq::message_t request;
socket.recv(&request);
std::string message = std::string(static_cast<char*>(request.data()), request.size());
std::cout << "Message received!" << std::endl;
std::cout << message << std::endl;
发布者没有错误地完成,但订阅者卡在了 recv() 中。是的,我以正确的顺序启动它们(订阅者优先)
【问题讨论】:
标签: c++ zeromq publish-subscribe