zmq poll实例

注意:此时不可以用ZMQ_REP ZMQ_REQ。  因为ZMQ_REQ发送一次数据后,如果没有收到数据,不能再次发送数据。 

 

ZmqIOServer端:

[cpp]  view plain copy
  1. #include <assert.h>  
  2. #include <iostream>  
  3. #include <tchar.h>  
  4. #include <zmq.h>  
  5. using namespace std;  
  6.   
  7. #pragma comment(lib,"libzmq.lib")  
  8.   
  9. void main(int argc,TCHAR*argv[])  
  10. {  
  11.     void *ctx;  
  12.     ctx = zmq_init(1);  
  13.     assert(ctx);  
  14.   
  15.     void *s1;  
  16.     s1 = zmq_socket(ctx,ZMQ_PULL);  
  17.     assert(s1);  
  18.   
  19.     void *s2;  
  20.     s2 = zmq_socket(ctx,ZMQ_PULL);  
  21.     assert(s2);  
  22.   
  23.     zmq_bind(s1,"tcp://127.0.0.1:6000");  
  24.     zmq_bind(s2,"tcp://127.0.0.1:7000");  
  25.   
  26.     while(1)  
  27.     {  
  28.         zmq_pollitem_t items[2];  
  29.         items[0].socket = s1;  
  30.         items[0].fd = 0;  
  31.         items[0].events = ZMQ_POLLIN;  
  32.   
  33.         items[1].socket = s2;  
  34.         items[1].fd = 0;  
  35.         items[1].events = ZMQ_POLLIN;  
  36.         int nRet = zmq_poll(items,2,-1);  
  37.         if(0 == nRet)  
  38.             continue;  
  39.   
  40.         zmq_msg_t msg;  
  41.         char re_string[20] = {0};  
  42.   
  43.         if(items[0].revents > 0)  
  44.         {  
  45.             zmq_msg_init(&msg);  
  46.             zmq_recv(s1,&msg,0);  
  47.             memcpy(re_string,(char*)zmq_msg_data(&msg),zmq_msg_size(&msg));  
  48.             cout<<"Socket1 recv : "<<re_string<<endl;  
  49.             zmq_msg_close(&msg);  
  50.         }  
  51.   
  52.         if(items[1].revents > 0)  
  53.         {  
  54.             zmq_msg_init(&msg);  
  55.             zmq_recv(s2,&msg,0);  
  56.             memcpy(re_string,(char*)zmq_msg_data(&msg),zmq_msg_size(&msg));  
  57.             cout<<"Socket2 recv : "<<re_string<<endl;  
  58.             zmq_msg_close(&msg);  
  59.         }  
  60.     }  
  61.       
  62.     zmq_close(s1);  
  63.     zmq_close(s2);  
  64.     zmq_term(ctx);  
  65. }  


ZmqIOClient1端:

[cpp]  view plain copy
  1. #include <assert.h>  
  2. #include <iostream>  
  3. #include <tchar.h>  
  4. #include <zmq.h>  
  5. using namespace std;  
  6.   
  7. #pragma comment(lib,"libzmq.lib")  
  8.   
  9. void main(int argc,TCHAR*argv[])  
  10. {  
  11.     void *ctx;  
  12.     ctx = zmq_init(1);  
  13.     assert(ctx);  
  14.   
  15.     void *s1;  
  16.     s1 = zmq_socket(ctx,ZMQ_PUSH);  
  17.     assert(s1);  
  18.   
  19.     zmq_connect(s1,"tcp://127.0.0.1:6000");  
  20.   
  21.     while(1)  
  22.     {  
  23.         char sd_string[20];  
  24.         cout<<"请输入sd_string:"<<endl;  
  25.         gets(sd_string);  
  26.   
  27.         zmq_msg_t msg;zmq_msg_init_size(&msg,strlen(sd_string)+1);  
  28.         memcpy(zmq_msg_data(&msg),sd_string,strlen(sd_string)+1);  
  29.         zmq_send(s1,&msg,0);  
  30.         zmq_msg_close(&msg);  
  31.     }  
  32.   
  33.     zmq_close(s1);  
  34.     zmq_term(ctx);  
  35. }  


ZmqIOClient2端:

[cpp]  view plain copy
  1. #include <assert.h>  
  2. #include <iostream>  
  3. #include <tchar.h>  
  4. #include <zmq.h>  
  5. using namespace std;  
  6.   
  7. #pragma comment(lib,"libzmq.lib")  
  8.   
  9. void main(int argc,TCHAR*argv[])  
  10. {  
  11.     void *ctx;  
  12.     ctx = zmq_init(1);  
  13.     assert(ctx);  
  14.   
  15.     void *s1;  
  16.     s1 = zmq_socket(ctx,ZMQ_PUSH);  
  17.     assert(s1);  
  18.   
  19.     zmq_connect(s1,"tcp://127.0.0.1:7000");  
  20.   
  21.     while(1)  
  22.     {  
  23.         char sd_string[20];  
  24.         cout<<"请输入sd_string2:"<<endl;  
  25.         gets(sd_string);  
  26.   
  27.         zmq_msg_t msg;  
  28.         zmq_msg_init_size(&msg,strlen(sd_string)+1);  
  29.         memcpy(zmq_msg_data(&msg),sd_string,strlen(sd_string)+1);  
  30.         zmq_send(s1,&msg,0);  
  31.         zmq_msg_close(&msg);  
  32.     }  
  33.   
  34.     zmq_close(s1);  
  35.     zmq_term(ctx);  
  36. }  

你可能感兴趣的:(zmq poll实例)