我是靠谱客的博主 如意口红,最近开发中收集的这篇文章主要介绍zmq是基于tcp实现的吗_网络通信 --> ZMQ安装和使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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上安装并测试成功,过程见下:

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

(3)编译

./configure 提示

checking forsodium... no

configure: error: Package requirements (libsodium) were not met

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

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

make

make install

安装成功。

二、测试程序

server端:

#include #include#include#include#include

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== 0);while (1) {char buffer [10];

zmq_recv (responder, buffer,10, 0);

printf ("Received Hellon");

sleep (1); //Do some 'work'

zmq_send (responder, "World", 5, 0);

}return 0;

}

client端:

//Hello World client

#include #include#include#include

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");intrequest_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 ("Received World %dn", request_nbr);

}

zmq_close (requester);

zmq_ctx_destroy (context);return 0;

}

编译:注意加上动态库

gcc hwserver_.c -o hwserver -lzmq

gcc hwclient_.c-o hwclient -lzmp

运行:出现如下错误

[root@localhost hwserver]# ./hwserver

./hwserver: error while loading shared libraries: libzmq.so.5: 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,执行结果如下所示:

59455d3579fec2e314972c05042e4813.png

77c73c407ea3d586ce9098211b62f7d6.png

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

最后

以上就是如意口红为你收集整理的zmq是基于tcp实现的吗_网络通信 --> ZMQ安装和使用的全部内容,希望文章能够帮你解决zmq是基于tcp实现的吗_网络通信 --> ZMQ安装和使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部