`
chen_gengjia
  • 浏览: 108379 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

zmq

阅读更多

1. 实验1

    1.1 安装zmq在ubuntu虚拟机上

        1.1.1 下载,./autogen.h   ./configure   ./make   ./sudo make install ,生成到动态链接库默认安装目录是  /usr/local/lib/,头文件包含在 /usr/local/include/zmq.h

    1.2 编辑helloworldserver.c 和 helloworldclient.c

    1.3  分别编译 gcc -o hws -lzmq helloworldserver.c 以及 gcc -o hwc -lzmq helloworldclient.c 生成 hws 和 hwc

    1.4  运行抓包软件 wireshark : sudo wireshark,打开监听 lo 回环端口(因为server 和 client 都绑定在本地lo端口)

    1.5 先运行 ./hws ,然后运行 ./hwc ,可以看到 wireshark 抓到了 127.0.0.1 到 127.0.0.1 的数据

(元代马和编译后的hws\hwc都在附件 helloworld.tar.gz)

 

发现问题: 实验是让 hwc 发‘hello’给 hws,后者接到后发送'world'给前者,但是,wireshark 抓到的数据根本看不出来'hello'或者'world',有可能是zmq传输数据时不是原文来着。

 

2. 实验2

    2.1 开启一个 hws ,同时开启多个 hwc,发现所有终端正常工作

    2.2 开启一个hwc,同时开启多个 hws,发现只有一个 hws 响应hwc(最先启动的那个)

    2.3 先开启 hwc,hwc终端界面在发了第一个数据后停在,然后开启hws,发现hwc和hws 都正常工作了

 

对于2.3 ,说明zmq内部有‘延迟’机制,可以在客户端比服务端先开启的情况下也正常工作,wireshark抓包分析,hwc一直在给127.0.0.1:5555端口发连接请求,但一直收到<RST,ACK>,表明这是localhost的 5555 端口还没有开启。因为代码设定的模式是S-C模式,使用TCP连接,所以wireshark结果符合我们的理解。2.1说名一个服务段可以同时为多个客户端提供服务。2.2 说明 zmq 内部对多个服务端可能造成混乱的情况做了处理,究竟什么策略,还要再看

 

 

3. 实验3

3.1 使用模式 Pub-Sub,分发-订购 ,S-C 模式下服务器绑定一个端口并监听,可以在该端口收和发数据,客户端连接服务器端口,也可以在连接上收和发数据。Pub-Sub模式下publisher 分发器绑定一个端口并分发信号,不能接受信号,subscriber 连接某个pub并接收信号,不能发送信号。 代码 wuserver.c 和 wuclient.c ,实现了pub一直分发代表天气信息的数据,sub 接收自己需要的数据(使用过滤器),代码在 weatherup.tar.gz

3.2 单独运行./wus ,抓包发现,没有任何连接数据,表明分发器在没有与任何订阅者建立连接之前,不会产生网络流量。

3.3 单独运行 ./wuc,发现sub一直往 127.0.0.1:5556 发送 SYN 信号请求建立连接,这点跟 2.3 一致。

3.4 先运行 ./ wus ,再运行 ./wuc,pub 和 sub 建立TCP连接,然后有了数据交流,从包里依然看不出是什么数据(加密了!)

3.4 运行多个 wuc(不同过滤条件),发现它们只打印自己过滤后的数据。根据文档说明,P-S的过滤是在sub段,所以每个Sub都可以接收所有数据,然后通过过滤器取所需数据

 

分享到:
评论

相关推荐

    ZMQ/ZeroMQ使用手册

    ZMQ(ØMQ、ZeroMQ, 0MQ)看起来像是一套嵌入式的网络链接库,但工作起来更 像是一个并发式的框架。它提供的套接字可以在多种协议中传输消息,如线程 间、进程间、TCP、广播等。你可以使用套接字构建多对多的连接...

    ZMQ简介,转

    ZMQ被称为史上最快消息队列,它处于会话层之上,应用层之下,使用后台异步线程完成消息的接受和发送,完美的封装了Socket API,大大简化了编程人员的复杂度,被称为史上最强大的消息中间件。ZMQ是用C语言编写的,30s...

    zmq.hpp 头文件

    zmq的cpp。头文件。

    windows下qt + zmq

    window下qt通过zmq的工程,分为demo、和应用。 主要为zmq的发布订阅的实现示例,使用该demo能够轻松模拟服务端、客户端、发布者和订阅者搭配组合的使用场景。 还有dll库。

    zmq调用示例

    C#使用zmq的例子代码 namespace Server { using System; using System.Text; class Program { static void Main() { using (var ctx = new ZMQ.Context(1)) { var sock = ctx.Socket(ZMQ.REP); sock.Bind...

    ZMQ数据传输各个版本库文件

    ZMQ数据传输

    grpc、zmq通信效率测试demo

    grpc、zmq通信效率测试demo

    使用ZMQ通信的头文件zmq.h

    使用ZMQ通信的头文件zmq.h

    zmq中文指南(离线网页版).zip

    官方zeromq the guide翻译,直接对网页全文进行翻译,包括英文原版网页与中文版网页,可用于zmq的学习。网页内容的版本为2019年10月24日。 The Guide is originally in C, but also in PHP, Java, Python, Lua, and ...

    zmq编译库和下一代nng库

    内涵zmq编译64位库和nng库,zmq编译了openpgm

    zeromq中的zmq.hpp

    zeromq中的zmq.hpp头文件,用于编写zeromq代码

    ZMQ的类结构图

    详细画出了zmq的类图,可以一目了然的了解zmq的类结构。

    C语言ZMQ server端代码

    C语言ZMQ server端代码

    ZMQ REQ_REP实例

    ZMQ的服务端、客户端小例子,ZMQ使用4.0.4,是最新版本;开发工具是VC2010;编译的程序和使用ZMQ都是x64位版本。希望对学习ZMQ有帮助。运行的时候先打开server,之后启动client;实现了服务端和客户端的简单收发通信...

    zmq ios最新框架

    zmq框架,是根据zmq官网对ios框架生成步骤,生成出来的。嫌麻烦的小伙伴下下来直接用!

    ZMQ 请求,响应模式deom

    1.ZMQ 2.请求,响应模式 3.deom

    ZMQ-4.3.4.zip

    ZMQ-4.3.4 动态库; 内含 dll, lib, zmq.h; msvc版本 + mingw 版本

    zmq 发布,订阅模式 , DEOM

    1.zmq 2.发布,订阅模式 3.DEOM

    Qt网络编程-ZMQ的使用

    简单的实现了ZMQ进程间通信的PUB/SUB模式

    ZMQ 三种模式实例

    ZeroMQ-Guide(中文版)中的代码实现版,使用VC2010,ZMQ4.0.4版本,X64环境下编译。只编译有debug。需要自己安装ZMQ4.0.4的版本;本地编译需要重新修改下include和lib文件夹的指向。x64/debug文件夹中的exe可直接运行...

Global site tag (gtag.js) - Google Analytics