In Chapter 1, Getting Started, and Chapter 2, Introduction to Sockets, we worked on programs with a single socket. Working on one socket is easy, but working on multiple sockets is somewhat tricky. To work with multiple sockets, we use zmq_poll(3)
, which is an event loop that allows an application to multiplex I/O with multiple sockets.
/* Polling with ZeroMQ */ #include <string.h> #include "zmq.h" int main (int argc, char const *argv[]) { void* ctx = zmq_ctx_new(); void* pull = zmq_socket(ctx, ZMQ_PULL); zmq_connect(pull, "tcp://localhost:4040"); void* subscriber = zmq_socket(ctx, ZMQ_SUB); char* company_name = "Company1"; int length = strlen(company_name) + 1; zmq_connect(subscriber, "tcp://localhost:5050"); zmq_setsockopt(subscriber, ZMQ_SUBSCRIBE, company_name, length); printf("starting...\n"); zmq_pollitem_t polls[2]; polls[0].socket = pull; polls[0].fd = 0; polls[0].events = ZMQ_POLLIN; polls[0]...