注意:此时不可以用ZMQ_REP ZMQ_REQ。 因为ZMQ_REQ发送一次数据后,如果没有收到数据,不能再次发送数据。
ZmqIOServer端:
- #include <assert.h>
- #include <iostream>
- #include <tchar.h>
- #include <zmq.h>
- using namespace std;
- #pragma comment(lib,"libzmq.lib")
- void main(int argc,TCHAR*argv[])
- {
- void *ctx;
- ctx = zmq_init(1);
- assert(ctx);
- void *s1;
- s1 = zmq_socket(ctx,ZMQ_PULL);
- assert(s1);
- void *s2;
- s2 = zmq_socket(ctx,ZMQ_PULL);
- assert(s2);
- zmq_bind(s1,"tcp://127.0.0.1:6000");
- zmq_bind(s2,"tcp://127.0.0.1:7000");
- while(1)
- {
- zmq_pollitem_t items[2];
- items[0].socket = s1;
- items[0].fd = 0;
- items[0].events = ZMQ_POLLIN;
- items[1].socket = s2;
- items[1].fd = 0;
- items[1].events = ZMQ_POLLIN;
- int nRet = zmq_poll(items,2,-1);
- if(0 == nRet)
- continue;
- zmq_msg_t msg;
- char re_string[20] = {0};
- if(items[0].revents > 0)
- {
- zmq_msg_init(&msg);
- zmq_recv(s1,&msg,0);
- memcpy(re_string,(char*)zmq_msg_data(&msg),zmq_msg_size(&msg));
- cout<<"Socket1 recv : "<<re_string<<endl;
- zmq_msg_close(&msg);
- }
- if(items[1].revents > 0)
- {
- zmq_msg_init(&msg);
- zmq_recv(s2,&msg,0);
- memcpy(re_string,(char*)zmq_msg_data(&msg),zmq_msg_size(&msg));
- cout<<"Socket2 recv : "<<re_string<<endl;
- zmq_msg_close(&msg);
- }
- }
- zmq_close(s1);
- zmq_close(s2);
- zmq_term(ctx);
- }
ZmqIOClient1端:
- #include <assert.h>
- #include <iostream>
- #include <tchar.h>
- #include <zmq.h>
- using namespace std;
- #pragma comment(lib,"libzmq.lib")
- void main(int argc,TCHAR*argv[])
- {
- void *ctx;
- ctx = zmq_init(1);
- assert(ctx);
- void *s1;
- s1 = zmq_socket(ctx,ZMQ_PUSH);
- assert(s1);
- zmq_connect(s1,"tcp://127.0.0.1:6000");
- while(1)
- {
- char sd_string[20];
- cout<<"请输入sd_string:"<<endl;
- gets(sd_string);
- zmq_msg_t msg;zmq_msg_init_size(&msg,strlen(sd_string)+1);
- memcpy(zmq_msg_data(&msg),sd_string,strlen(sd_string)+1);
- zmq_send(s1,&msg,0);
- zmq_msg_close(&msg);
- }
- zmq_close(s1);
- zmq_term(ctx);
- }
ZmqIOClient2端:
- #include <assert.h>
- #include <iostream>
- #include <tchar.h>
- #include <zmq.h>
- using namespace std;
- #pragma comment(lib,"libzmq.lib")
- void main(int argc,TCHAR*argv[])
- {
- void *ctx;
- ctx = zmq_init(1);
- assert(ctx);
- void *s1;
- s1 = zmq_socket(ctx,ZMQ_PUSH);
- assert(s1);
- zmq_connect(s1,"tcp://127.0.0.1:7000");
- while(1)
- {
- char sd_string[20];
- cout<<"请输入sd_string2:"<<endl;
- gets(sd_string);
- zmq_msg_t msg;
- zmq_msg_init_size(&msg,strlen(sd_string)+1);
- memcpy(zmq_msg_data(&msg),sd_string,strlen(sd_string)+1);
- zmq_send(s1,&msg,0);
- zmq_msg_close(&msg);
- }
- zmq_close(s1);
- zmq_term(ctx);
- }