使用ZeroMQ实现CS通信
来源:互联网 发布:ug编程教程入门视频 编辑:程序博客网 时间:2024/06/07 20:45
ZeroMQ比直接用Socket通信好用很多, 下面附代码实现client-server的通信。
client.c
/* * filename:client.c * author: yann */#include<zmq.h>#include<stdio.h>#include<unistd.h>#define MAX_BUFFER_SIZE 4096int main(int argc, char * argv[]){ void * pCtx = NULL; void * pSock = NULL; const char * pAddr = "tcp://127.0.0.1:7767"; if((pCtx = zmq_ctx_new())==NULL){ return 0; } if((pSock = zmq_socket(pCtx, ZMQ_DEALER))==NULL){ zmq_ctx_destroy(pCtx); return 0; } if(zmq_connect(pSock, pAddr)<0){ zmq_close(pSock); zmq_ctx_destroy(pCtx); return 0; } while(1){ static int i = 0; char buff[MAX_BUFFER_SIZE]; gets(buff); zmq_send(pSock, buff, MAX_BUFFER_SIZE, 0); printf("send:%s\n", buff); zmq_recv(pSock, buff, MAX_BUFFER_SIZE, 0); printf("receive:%s\n", buff); } zmq_close(pSock); zmq_ctx_destroy(pCtx); return 0;}
server.c
/* * filename:server.c * author: yann */#include<zmq.h>#include<stdio.h>#include<stdlib.h>#include<string.h>int main(int argc, char * argv[]){void * pCtx = NULL;void * pSock = NULL;const char * pAddr = "tcp://*:7767";if((pCtx = zmq_ctx_new()) == NULL){return 0;}if((pSock = zmq_socket(pCtx, ZMQ_DEALER))==NULL){zmq_ctx_destroy(pCtx);return 0;}if(zmq_bind(pSock, pAddr)<0){zmq_close(pSock);zmq_ctx_destroy(pCtx);return 0;}while(1){ char buff[4096];memset(buff, 0, sizeof(buff));zmq_recv(pSock, buff, sizeof(buff), 0);printf("receive: %s\n", buff); zmq_send(pSock, buff, sizeof(buff), 0); printf("send: %s\n", buff);} zmq_close(pSock); zmq_ctx_destroy(pCtx);return 0;}
编译运行:
gcc -o client client.c -lzmq
gcc -o server server.c -lzmq
运行程序, 即可实现client-server的通信。 其中client和server开启的顺序是没有关系的。
-lzmq是链接zmq库文件, 会在安装zmq的时候生成, 具体的安装zmq的教程之后可能会写, 需要的可以私信我。
阅读全文
0 0
- 使用ZeroMQ实现CS通信
- 使用Zeromq和protobuf实现的socket通信
- ZeroMQ实例-使用ZMQ(ZeroMQ)进行局域网内网络通信
- ZeroMQ实例-使用ZeroMQ进行windows与linux之间的通信
- 使用boost asio库实现字节数可控的CS通信
- zeromq 利用protobuf通信
- ZeroMQ之通信模式
- Socket加入多线程通信实现简单的CS聊天室
- Android蓝牙CS通信机制的深入挖掘与使用
- ZeroMQ(java)之I/O线程的实现与组件间的通信
- ZeroMQ(java)之I/O线程的实现与组件间的通信
- ZeroMQ(java)之I/O线程的实现与组件间的通信
- ZeroMQ(java)之I/O线程的实现与组件间的通信
- python使用zeroMQ库的套接字模拟服务器客户端通信
- ZeroMQ多线程使用规则
- ZeroMQ 最简单使用
- 小心使用zeromq
- ZeroMQ 使用(一)
- add path command
- 【JavaSE系列-基础篇6】——为什么使用泛型?
- 叉乘的一种符号表达
- OSG学习:多重纹理映射
- Android 实现沉浸式通知栏
- 使用ZeroMQ实现CS通信
- Linux总结(1)
- NOIP2015 day2t3 运输计划
- Verilog组合逻辑和时序逻辑的比较
- 琐碎代码笔记
- Linux及Arm-Linux程序开发笔记(零基础入门篇)
- Windows Socket 异步编程(非阻塞模式)
- SpringMVC上传下载
- Servlet总结(1)