#include #include #include #include #include void *context; void *responder; int SendData(const void *pvData, unsigned int uiDataLen) { return zmq_send (responder, pvData, uiDataLen, 0); } int RecvData(void *pvData, unsigned int uiDataLen) { return zmq_recv (responder, pvData, uiDataLen, 0); } int main (void) { // Socket to talk to clients context = zmq_ctx_new (); responder = zmq_socket (context, ZMQ_REP); unsigned int uiTimeout = 5 * 1000; int rst = 0; zmq_setsockopt(responder, ZMQ_RCVTIMEO, &uiTimeout, sizeof(uiTimeout)); zmq_setsockopt(responder, ZMQ_SNDTIMEO, &uiTimeout, sizeof(uiTimeout)); int rc = zmq_bind (responder, "tcp://*:5555"); assert (rc == 0); while (1) { char buffer [10]; // zmq_recv (responder, buffer, sizeof buffer, 0); printf("start\n"); rst = RecvData(buffer, sizeof buffer); printf("end\n"); if(rst <= 0 ) { printf("recv error: %d\n", rst); continue; } printf ("Received %s\n", buffer); sleep (3); // Do some 'work' // zmq_send (responder, buffer, sizeof buffer, 0); SendData(buffer, sizeof buffer); // sleep(4); } return 0; }