zeromq安装使用
2015-10-04 12:02
344 查看
一、zeromq简介
zeromq的官方网站:http://zeromq.org/ , 简介如下:
二、安装
从官网下载zeromq-4.0.7.tar.gz,
root@ubuntu:zeromq-4.0.7# ls /usr/local/zeromq/
bin include lib share
三、使用
以下是用zeromq实现的简单的echo服务器:
zmqsvr.c:
zmqcli.c:
zmqsvr和zmqcli实现了从client端发送helloi, server端收到后并echo回给client。
makefile如下:
root@ubuntu:zeromq# make
gcc -g -I/usr/local/zeromq/include/ -Wall zmqsvr.c -o zmqsvr -L/usr/local/zeromq/lib/ -lzmq
gcc -g -I/usr/local/zeromq/include/ -Wall zmqcli.c -o zmqcli -L/usr/local/zeromq/lib/ -lzmq
另一个终端里:
(如果运行时出现cannot found libzmq.so.4之类的错误,可以使用 strace ./zmqsvr查看调用的libzmq.so.4的路径,比如/lib/i386-linux-gnu/i686/,将libzmq.so.4复制到该路径即可。)
zeromq的官方网站:http://zeromq.org/ , 简介如下:
ZeroMQ (also known as ØMQ, 0MQ, or zmq) looks like an embeddable networking library but acts like a concurrency framework. It gives you sockets that carry atomic messages across various transports like in-process, inter-process, TCP, and multicast. You can connect sockets N-to-N with patterns like fan-out, pub-sub, task distribution, and request-reply. It's fast enough to be the fabric for clustered products. Its asynchronous I/O model gives you scalable multicore applications, built as asynchronous message-processing tasks. It has a score of language APIs and runs on most operating systems. ZeroMQ is from iMatix and is LGPLv3 open source.
二、安装
从官网下载zeromq-4.0.7.tar.gz,
tar zxvf zeromq-4.0.7.tar.gz cd zeromq-4.0.7 ./configure --prefix=/usr/local/zeromq make make install
root@ubuntu:zeromq-4.0.7# ls /usr/local/zeromq/
bin include lib share
三、使用
以下是用zeromq实现的简单的echo服务器:
zmqsvr.c:
#include "zmq.h" #include <string.h> #include <unistd.h> int main(void) { void* zmq_ctx = zmq_ctx_new(); void* zmq_sock = zmq_socket(zmq_ctx, ZMQ_REP); zmq_bind(zmq_sock, "tcp://*:5555"); printf("start listen for socket...\n"); int seq = 0; while (1) { printf("\nloop seq: %d\n", seq++); int msg_size = 0; char buf[10] = {0}; zmq_msg_t request; zmq_msg_init(&request); zmq_msg_recv(&request, zmq_sock, 0); msg_size = zmq_msg_size(&request); memcpy(buf, zmq_msg_data(&request), msg_size); printf("recv request: %s\n", buf); zmq_msg_close(&request); sleep(1); zmq_msg_t reply; zmq_msg_init_size(&reply, msg_size); memcpy(zmq_msg_data(&reply), buf, msg_size); printf("send reply: %s\n", buf); zmq_msg_send(&reply, zmq_sock, 0); zmq_msg_close(&reply); } sleep(1); zmq_close(zmq_sock); zmq_ctx_destroy(zmq_ctx); return 0; }
zmqcli.c:
#include <zmq.h> #include <stdio.h> #include <unistd.h> #include <string.h> int main(void) { void* zmq_ctx = zmq_ctx_new(); void* zmq_sock = zmq_socket(zmq_ctx, ZMQ_REQ); zmq_connect(zmq_sock, "tcp://localhost:5555"); int index = 0; for (index = 0; index < 10; index++) { printf("\nloop seq:%d\n", index); zmq_msg_t request; zmq_msg_init_size(&request, 6); char buf[10] = {0}; sprintf(buf, "hello%d", index); memcpy(zmq_msg_data(&request), buf, 6); printf("send request: %s\n", buf); zmq_msg_send(&request, zmq_sock, 0); zmq_msg_close(&request); memset(buf, 0, sizeof(buf)); zmq_msg_t reply; zmq_msg_init(&reply); zmq_msg_recv(&reply, zmq_sock, 0); memcpy(buf, zmq_msg_data(&reply), zmq_msg_size(&reply)); printf("recv reply: %s\n", buf); zmq_msg_close(&reply); } sleep(1); zmq_close(zmq_sock); zmq_ctx_destroy(zmq_ctx); return 0; }
zmqsvr和zmqcli实现了从client端发送helloi, server端收到后并echo回给client。
makefile如下:
TARGET = zmqsvr zmqcli all: $(TARGET) CFLAGS = -g -I/usr/local/zeromq/include/ -Wall LDFLAGS = -L/usr/local/zeromq/lib/ zmqsvr:zmqsvr.c gcc $(CFLAGS) $< -o $@ $(LDFLAGS) -lzmq zmqcli:zmqcli.c gcc $(CFLAGS) $< -o $@ $(LDFLAGS) -lzmq clean: rm -rf $(TARGET)
root@ubuntu:zeromq# make
gcc -g -I/usr/local/zeromq/include/ -Wall zmqsvr.c -o zmqsvr -L/usr/local/zeromq/lib/ -lzmq
gcc -g -I/usr/local/zeromq/include/ -Wall zmqcli.c -o zmqcli -L/usr/local/zeromq/lib/ -lzmq
root@ubuntu:zeromq# ./zmqcli loop seq:0 send request: hello0 recv reply: hello0 loop seq:1 send request: hello1 recv reply: hello1 ... loop seq:9 send request: hello9 recv reply: hello9
另一个终端里:
mamo@ubuntu:zeromq$ ./zmqsvr start listen for socket... loop seq: 0 recv request: hello0 send reply: hello0 ... loop seq: 9 recv request: hello9 send reply: hello9 loop seq: 10
(如果运行时出现cannot found libzmq.so.4之类的错误,可以使用 strace ./zmqsvr查看调用的libzmq.so.4的路径,比如/lib/i386-linux-gnu/i686/,将libzmq.so.4复制到该路径即可。)
相关文章推荐
- USACO 2.4 Cow Tours (Floyd最短路径 + DFS)
- windows xp 不支持Wap2加密方式
- A016-布局之RelativeLayout
- java代码实现JDBC连接MySql以及引用驱动程序包
- CC254X片上flash读写解析
- 黑马程序员——Java基础日记——面向对象
- HDU 2012 素性
- 在Xcode中的textField中输入中文
- Vijos[1028]魔族密码
- iOS讲解迷惑深入浅出之block那点事
- iOS开发 —— MVVM设计模式
- 常用几个结构体
- 有关sql server 2008无法导入数据库mdf文件的处理方法
- 输出编译器预处理器的中间文件
- 20135306黄韧 信息安全系统设计基础第三周学习总结
- hdu1754 I hate it线段树模板 区间最值查询
- LintCode "Binary Representation"
- hdu1754 I hate it线段树模板 区间最值查询
- 证券基础--股票发行方式
- Odoo9发行说明