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都可以接收所有数据,然后通过过滤器取所需数据

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值