Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // g++ -std=c++11 -o pub_sub pub_sub.cpp -lzmq -lpthread
- #include <iostream>
- #include <thread>
- #include <zmq.hpp>
- std::string address("tcp://127.0.0.1:5566");
- zmq::context_t ctx;
- void subscriber(void)
- {
- zmq::socket_t socket(ctx, ZMQ_SUB);
- int timeout(5000);
- socket.setsockopt(ZMQ_RCVTIMEO, &timeout, sizeof(timeout));
- socket.setsockopt(ZMQ_SUBSCRIBE, nullptr, 0);
- socket.bind(address);
- zmq::message_t msg;
- std::cout << "Wait for message." << std::endl;
- if (socket.recv(&msg)) {
- std::cout << "Got message." << std::endl;
- }
- else {
- std::cerr << "Timeout waiting for message." << std::endl;
- }
- }
- int main ()
- {
- std::thread sub(subscriber);
- // allow subscriber to bind() and recv()
- std::this_thread::sleep_for(std::chrono::milliseconds(1));
- zmq::socket_t socket(ctx, ZMQ_PUB);
- socket.connect(address);
- // no message is received if this sleep is removed
- std::this_thread::sleep_for(std::chrono::milliseconds(1));
- zmq::message_t msg(0);
- if (socket.send(msg)) {
- std::cout << "Sent message." << std::endl;
- }
- else {
- std::cerr << "Failed to send message." << std::endl;
- }
- sub.join();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement