ZMQ安装和使用

  ZMQ 并不像是一个传统意义上的消息队列服务器,事实上,它也根本不是一个服务器,它更像是一个底层的网络通讯库,在 Socket API 之上做了一层封装,将网络通讯、进程通讯和线程通讯抽象为统一的 API 接口

  跟 Socket 的区别是:普通的 socket 是端到端的(1:1的关系),而 ZMQ 却是可以N:M 的关系,人们对 BSD 套接字的了解较多的是点对点的连接,点对点连接需要显式地建立连接、销毁连接、选择协议(TCP/UDP)和处理错误等,而 ZMQ 屏蔽了这些细节,让你的网络编程更为简单。ZMQ 用于 node 与 node 间的通信,node 可以是主机或者是进程。

  ZMQ 提供了三个基本的通信模型,分别是“Request-Reply “,”Publisher-Subscriber“,”Parallel Pipeline”,具体内容参见http://news.cnblogs.com/n/154000/

区别:

  1、zmq套接字是异步的,可以实现特定模式

  2、TCP是一对一,ZeroMQ是多对多的,可以根据套接字类型实现一对多,一对一,多对一,或多对多

  3、ZeroMQ传输消息,TCP传输字节

  4、ZeroMQ 隐藏IO细节,ZeroMQ不在乎目的是否存在

  5、ZeroMQ可以往多个节点发送数据,可以从多个节点接收数据

一、安装

在ubuntu上安装并测试成功,过程见下:

  (1)下载最新的ZeroMQ:http://download.zeromq.org/

  (2)解压:tar -xvf zeromq-4.1.2.tar.gz

  (3)编译

./configure 提示

checking for sodium... no
configure: error: Package requirements (libsodium) were not met

解决办法,暂时先屏蔽掉这个库:

./configure --prefix=/home/libdev/zmq --without-libsodium    //红色部分路径可以去掉
make
make install

安装成功。

测试程序

server端:

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <assert.h>
#include <zmq.h> int main (void)
{
// Socket to talk to clients
void *context = zmq_ctx_new ();
void *responder = zmq_socket (context, ZMQ_REP);
int rc = zmq_bind (responder, "tcp://*:5555");
assert (rc == ); while () {
char buffer [];
zmq_recv (responder, buffer, , );
printf ("Received Hello\n");
sleep (); // Do some 'work'
zmq_send (responder, "World", , );
}
return ;
}

client端:

//  Hello World client
#include <zmq.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h> int main (void)
{
printf ("Connecting to hello world server…\n"); /*创建一个新的上下文*/
void *context = zmq_ctx_new ();
void *requester = zmq_socket (context, ZMQ_REQ);
/*通过tcp协议,5555端口,连接本机服务端*/
zmq_connect (requester, "tcp://localhost:5555"); int request_nbr;
for (request_nbr = ; request_nbr != ; request_nbr++) {
char buffer [];
printf ("Sending Hello %d…\n", request_nbr);
zmq_send (requester, "Hello", , );
zmq_recv (requester, buffer, , );
printf ("Received World %d\n", request_nbr);
} zmq_close (requester);
zmq_ctx_destroy (context); return ;
}

编译:注意加上动态库

gcc hwserver_.c -o hwserver -lzmq
gcc hwclient_.c -o hwclient -lzmp

运行:出现如下错误

[root@localhost hwserver]# ./hwserver
./hwserver: error while loading shared libraries: libzmq.so.: cannot open shared object file: No such file or directory

解决办法:加上zmq.so的路径:

sudo find ./ -depth -name "libzmq.so" -print  //找出动态库路径

cd /etc
sudo vim ld.so.conf //
include /usr/local/lib //把zmq.so的路径加进来
ldconfig //记住执行这句话

然后启动hwserver和hwclient,执行结果如下所示:

参考:http://www.cnblogs.com/Anker/p/4706244.html

网络通信 --> ZMQ安装和使用的更多相关文章

  1. windows如何安装python zmq

    百度windows python zmq 安装,真的是佩服百度还能活到今天,搜到的结果是各种yum 安装,各种jmq怎么安装,更有甚者直接整源代码编译,忍无可忍,所以自己写下这一篇自己探索出来的安装方 ...

  2. Linux 上网络监控工具 ntopng 的安装

    当今世界,人们的计算机都相互连接,互联互通.小到你的家庭局域网(LAN),大到最大的一个被我们称为互联网.当你管理一台联网的计算机时,你就是在管理最关键的组件之一.由于大多数开发出的应用程序都基于网络 ...

  3. Linux下zeromq.js安装

    本文章主要阐述在离线环境下安装zeromq.js的方法和步骤.zeromq.js下载地址: https://www.npmjs.com/package/zeromq或者 https://github. ...

  4. ZeroMQ安装说明

    ZeroMQ安装说明 1.   安装 1.1.Linux zmq安装 安装过程参考地址:http://zeromq.org/intro:get-the-software的说明 安装步骤如下(在安装时参 ...

  5. gozmq的安装与使用

    1. 安装zmq 下载Windows版安装或linux版本并执行安装命令: tar zxvf zeromq-4.1.6.tar.gz cd zeromq-4.1.6 ./configure make ...

  6. ubuntu安装zeromq

    官网地址:http://zeromq.org/ ubuntu下zmq安装 (1)下载:wget http://download.zeromq.org/zeromq-4.1.4.tar.gz (2)解压 ...

  7. Centos安装zeromq, jzmq

    昨晚上帮LP一起在centos上安装zeromq.刚开始的时候,LP说在公司的机器装各种依赖包下不到,第一感觉安装起来还挺麻烦的. 然后上网搜索linux下zeromq的安装,然后先安装各种所需的依赖 ...

  8. ZeroMQ实例-使用ZeroMQ进行windows与linux之间的通信

    1.本文包括 1)在windows下使用ZMQ 2)在windows环境下与Linux环境下进行网络通信 2.在Linux下使用ZMQ 之前写过一篇如何在Linux环境下使用ZMQ的文章 <Ze ...

  9. ZeroMQ 教程 001 : 基本概览

    介绍性的话我这里就不翻译了, 总结起来就是zmq很cool, 你应该尝试一下. 如何安装与使用zmq 在Linux和Mac OS上, 请通过随机附带的包管理软件, 或者home brew安装zmq. ...

随机推荐

  1. dojo、iframe和FusionCharts兼容性

    今天,我们项目组对项目收尾检查,却突然发现了一个问题,FusionCharts出现兼容性问题. 在火狐浏览器上,项目运行正常:在IE8(标准模式下)运行正常,但是在IE8杂项出现兼容性问题.经过检查, ...

  2. am335x在ubuntu下使用StarterWare编写裸机程序并在CCS中用Jlink调试

    StarterWare在AM335X上的烧录运行 步骤:1.下载安装StarterWare,我们团购的SK需要02.00.00.07版本.最近外网访问慢,我上传到论坛.2.找一张miniSD卡,不需要 ...

  3. 芝麻HTTP:Flask的安装

    Flask是一个轻量级的Web服务程序,它简单.易用.灵活,这里主要用来做一些API服务. 1. 相关链接 GitHub:https://github.com/pallets/flask 官方文档:h ...

  4. iOS - GATT Profile 简介

    1.引言 现在低功耗蓝牙(BLE)连接都是建立在 GATT (Generic Attribute Profile) 协议之上.GATT 是一个在蓝牙连接之上的发送和接收很短的数据段的通用规范,这些很短 ...

  5. 常用的freemark语法(三)

    一,符号的意义 1.0,单问号 ?后面要加关键字,例如:<#if object?exists>object对象不为空</#if> <#if str??>${str? ...

  6. pycharm short-cut

    Ctrl + the left mouse button Ctrl + Alt + Left/Right if invalid, system setting

  7. [Luogu3121][USACO15FEB]审查Censoring

    题面 sol 开一个栈记录依次经过的\(AC\)自动机上的节点编号以及这一次的字母,若匹配到一个串就直接弹掉栈顶的\(len\)个元素,\(len\)为匹配到的模式串长度.弹栈顶直接\(top-=le ...

  8. UVA10692:Huge Mods

    题面 传送门 题意 输入正整数a1,a2,a3..an和模m,求a1^a2^...^an mod m Sol 首先有\[ a^b\equiv \begin{cases} a^{b\%\phi(p)}~ ...

  9. 【learning】凸包

    吐槽 计算几何这种东西qwq一开始真的觉得恶心qwq(主要是总觉得为啥画图那么直观的东西非要写一大堆式子来求qwq真的难受qwq) 但其实静下心来学习的话感觉还是很妙的ovo题目思考起来也十分好玩ov ...

  10. [.Net Core] 简单使用 Mvc 内置的 Ioc

    简单使用 Mvc 内置的 Ioc 本文基于 .NET Core 2.0. 鉴于网上的文章理论较多,鄙人不才,想整理一份 Hello World(Demo)版的文章. 目录 场景一:简单类的使用 场景二 ...