#include #include #include #include #include void *context; void *requester; void initSocket() { context = zmq_ctx_new (); requester = zmq_socket (context, ZMQ_REQ); unsigned int uiTimeout = 3 * 1000; zmq_setsockopt(requester, ZMQ_RCVTIMEO, &uiTimeout, sizeof(uiTimeout)); zmq_setsockopt(requester, ZMQ_SNDTIMEO, &uiTimeout, sizeof(uiTimeout)); zmq_connect (requester, "tcp://localhost:5555"); } int SendData(const void *pvData, unsigned int uiDataLen) { initSocket(); return zmq_send (requester, pvData, uiDataLen, 0); } int RecvData(void *pvData, unsigned int uiDataLen) { int rst = zmq_recv (requester, pvData, uiDataLen, 0); zmq_close (requester); zmq_ctx_destroy (context); return rst; } void *client1(void *args) { int rst; printf ("Connecting to hello world server…\n"); int request_nbr; for (request_nbr = 0; request_nbr != 100; request_nbr++) { char buffer [20]; sprintf(buffer, "Hellooooooooooooooooooooooooooooooooooo %d", request_nbr); printf ("-----------------%d--------------\n",request_nbr); printf ("Sending %s…, rst:", buffer); rst = SendData(buffer, 20); if(rst < 0) { printf("Send error: %s\n", zmq_strerror(zmq_errno())); sleep(1); continue; } else printf ("...ok\n"); rst = RecvData(buffer, 20); if(rst < 0) { printf("recv error: %s\n", zmq_strerror(zmq_errno())); } else printf ("Received World %d\n", request_nbr); sleep(1); } zmq_close (requester); zmq_ctx_destroy (context); } int main (void) { int rst; printf ("Connecting to hello world server…\n"); int request_nbr; for (request_nbr = 0; request_nbr != 100; request_nbr++) { char buffer [1024]; sprintf(buffer, "Hello00000000000000000000 %d", request_nbr); printf ("-----------------%d--------------\n",request_nbr); printf ("Sending %s…, rst:", buffer); // rst = zmq_send (requester, buffer, sizeof(buffer), 0); rst = SendData(buffer, sizeof(buffer)); if(rst < 0) { printf("Send error: %s\n", zmq_strerror(zmq_errno())); sleep(1); continue; } else printf ("...ok\n"); // rst = zmq_recv (requester, buffer, 10, 0); rst = RecvData(buffer, sizeof(buffer)); if(rst < 0) { printf("recv error: %s\n", zmq_strerror(zmq_errno())); // sleep(1); // continue; } else printf ("Received World %d\n", request_nbr); // sleep(1); } zmq_close (requester); zmq_ctx_destroy (context); return 0; }