Zeromq简介
Zeromp是一个C++编写的高性能分布式消息,是一个非常简单好用的传输层,使得Socket编程更加简单、简洁和性能更高效。
Zeromq特点
- 支持高并发的异步Socket框架
- 协议比TCP更快,适用于大型集群和分布式计算
- 提供多种消息传递机制,如inproc/IPC/TCP/multicast等
- 内置丰富的组合模式,可用于简化大型分布式计算框架
- 提供异步I/O模式,适用于可扩展的多核应用开发
- 拥有活跃的开发者社区提供技术支持,发展相当迅速
- 支持超过30种的编程语言,如C/C++/Java/.Net/Python/PHP等
- 良好的跨平台性,支持多种OS,如Linux/Windows/OS X等
- 拥有iMatix公司的商业级别支持,却使完全免费的
下载与安装
1)下载
git clone git://github.com/zeromq/libzmq.git解码
2)编译与安装
cd libzmq/
yum install gettext
./autogen.sh
./configure
make check
make
make install即可。
3)简单测试
// server.cpp
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <assert.h>
#include <zmq.h>
int main() {
void *context = zmq_ctx_new();
void *responder = zmq_socket(context, ZMQ_REP);
int rc = zmq_bind(responder, "tcp://*:5555");
assert(rc == 0);
while (1) {
char buffer[10];
zmq_recv(responder, buffer, 10, 0);
printf("Received Hello\n");
sleep(1);
zmq_send(responder, "World", 5, 0);
}
return 0;
}
// client.cpp
#include <zmq.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>
int main() {
printf("Connecting to hello world server...\n");
void *context = zmq_ctx_new();
void *requester = zmq_socket(context, ZMQ_REQ);
zmq_connect(requester, "tcp://localhost:5555");
int request_nbr;
for (request_nbr = 0; request_nbr != 10; request_nbr++) {
char buffer[10];
printf("Sending Hello %d...\n", request_nbr);
zmq_send(requester, "Hello", 5, 0);
zmq_recv(requester, buffer, 10, 0);
printf("Receive World %d\n", request_nbr);
}
zmq_close(requester);
zmq_ctx_destroy(context);
return 0;
}
对应编译:
g++ client.cpp -o client -lzmq
g++ server.cpp -o server -lzmq
然后执行./server和./client即可。
注意:带zmq.hpp版本的编译,参考如下链接:
https://blog.csdn.net/changqing5818/article/details/46916293