【ZeroMQ】轮询zmq_poll()的使用
来源:互联网 发布:影响期货行情三大数据 编辑:程序博客网 时间:2024/05/17 01:56
注意:此时不可以用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);}
- 【ZeroMQ】轮询zmq_poll()的使用
- zmq_poll
- 消息队列-ZeroMQ的安装以及使用
- ZeroMQ实例-使用ZeroMQ进行windows与linux之间的通信
- JAVA使用ZeroMQ优秀的使用(从0到1)
- ZeroMQ多线程使用规则
- ZeroMQ 最简单使用
- 小心使用zeromq
- ZeroMQ 使用(一)
- 安装使用zeromq
- ZeroMQ安装及使用
- 为什么需要使用zeromq
- 安装使用zeromq
- ZeroMQ/jzmq安装使用
- zeroMQ初体验-10.优雅的使用多线程
- windows下zeromq和jzmq的编译与使用
- zeromq在windowsXP使用的libzmq.dll部署
- 使用Zeromq和protobuf实现的socket通信
- c#
- 虚拟机无法上网
- mtdutils工具移植到tx2440
- web性能优化
- crontab
- 【ZeroMQ】轮询zmq_poll()的使用
- 第一个DirectX9.0 3D应用实例
- insert into 和insert into select性能比较
- 高手请教
- 什么是回调函数?
- windows路由表基础
- 一些不错的开源Flex项目
- 玩一玩那些个二进制的东东~
- chrome浏览器插件编写