一、需求场景

  • ØMQ用户的一个常见要求是:“我如何使用X技术连接我的ØMQ网络?”。其中X是某些其他网络或通信技术
  • 简单的答案是建立一个“桥梁”。桥是指一个小型应用程序,它用一种协议与一个套接字交流,并将其转换为另一个套接字的另一种协议。如果你喜欢,可以称之为一个协议解释器。ØMQ中一个常见的桥接问题是衔接两种传输协议或网络

二、演示案例

  • 现在我们编写一个小型代理,它位于一个发布者和一组订阅者之间,衔接两个网络:

    • 前端接口(SUB)面对着驻留了天气服务器的内部网络,而后端(PUB)面对着外部网络上的订阅者
    • 它在前端套接字上订阅气象服务,并在后端套接字上重新发布数据

  • 这个转发代理非常类似于早期代理的例子,但关键的部分在于,前端和后端套接字在两个不同的网络上。例如,我们可以留用这个模型将多播网络(pgm传输协议)连接到一个TCP发布者
  • 演示代码如下:下面是转发代理的代码,其中使用了zmq_proxy()接口来定义代理,非常简洁
// wuproxy.c
// 源码链接: https://github.com/dongyusheng/csdn-code/blob/master/ZeroMQ/wuproxy.c
#include <stdio.h>
#include <zmq.h>int main()
{// 1.创建新的上下文void *context = zmq_ctx_new();// 2.前端套接字, 用于连接内部的天气服务器void *frontend = zmq_socket(context, ZMQ_XSUB);zmq_connect(frontend, "tcp://localhost:5556");// 3.后端套接字, 用来处理外部的订阅者的请求void *backend = zmq_socket(context, ZMQ_XPUB);zmq_bind(backend, "tcp://111.229.177.161:8100");// 4.持续运行代理zmq_proxy(frontend, backend, NULL);// 5.关闭套接字、清除上下文zmq_close(frontend);zmq_close(backend);zmq_ctx_destroy(context);return 0;
}
  • 编译运行如下
gcc -o wuproxy wuproxy.c -lzmq
  • 运行如下:

    • 上方的是发布者(wuserver.c),运行在内部,其绑定的地址是“tcp://*:5556”
    • 中间的是代理(就是上面的wuproxy.c),也运行在内网。其连接到发布者localhost:5556上,并绑定外网地址111.229.177.161:8100上(由于我们使用的是腾讯的云服务器,云服务器编写服务器程序绑定时只能使用0.0.0.0,因此其实际绑定的地址是0.0.0.0:8100)
    • 最下面的是订阅者(wuclient.c),运行在外网,其连接到代理111.229.177.161:8100上

  • 代码请参阅,记得使用时请修改绑定或连接的地址端口:

    • wuserver.c:https://github.com/dongyusheng/csdn-code/blob/master/ZeroMQ/wuserver.c
    • wuclient.c:https://github.com/dongyusheng/csdn-code/blob/master/ZeroMQ/wuclient.c

附加:zmq_proxy()函数

  • ØMQ提供了一个内置代理函数zmq_proxy(),可以很轻松的完成这个代理任务,详情请参阅:https://blog.csdn.net/qq_41453285/article/details/106887035。

  • 我是小董,V公众点击"笔记白嫖"解锁更多【ZeroMQ】资料内容。

以XSUB、XPUB为例,浅谈ZeroMQ的传输桥接(转发代理)相关推荐

  1. word 流水号 自动增加_以自动组卷软件为例浅谈Python自动化办公

    Python作为一种学习门槛低.简洁并且编码效率高的热门编程语言,在很多行业都有广泛的应用.在自动化办公领域,掌握一点Python知识就能够把或复杂或繁琐的工作交由计算机自动处理,堪称解放劳动力的利器 ...

  2. 戴尔为例 浅谈电子商务时代客户关系管理

    计算机互联网技术的发展也为现代客户关系管理实现更完善的功能提供了可能性.精明的企业目前都在认真反省自己的CRM战略,并开始把CRM作为它们挽留客户的重要手段,希望凭借CRM的智能客户管理给企业带来忠实 ...

  3. 以龙讯LT8911为例浅谈LVDS/MIPI转EDP

    目前市场上主流的高清显示屏以EDP,MIPI屏为主,适用的数码产品领域比较广 本文主要以LT8911驱动EDP屏为主,讲述其适用领域及常用驱屏方案, eDP接口屏主要适用在平板电脑,笔记本,智能高清电 ...

  4. 风暴孵化浅谈:何为值得手游代理的“好”游戏

    首先肯定是高质量的"好"游戏才值得去代理.这里的"好"可以从不同的立场进行客观理解,至于选择哪个维度入手,也要结合行情以及想要发展的方向入手. 玩家视角-虽然说 ...

  5. 浅谈“密码明文传输”

    一:漏洞名称: 密码明文传输 描述: 明文传输一般存在于web网站登陆页面,用户名密码采取明文传输并未采取加密(注意:一些软件如BurpSuite带有可加密的暴力破解!)容易被嗅探软件截取(如果加密方 ...

  6. 浅谈FTP(文件传输协议)

    FTP(文件传输协议) FTP(File Transfer Protocol) ,是一种处于应用层的用于文件传输的协议.是基于TCP协议的应用层协议,用于在网络上传输文件. 该协议使用的端口号为20和 ...

  7. 浅谈经典大气辐射传输模型

    5S模型 1986年由法国里尔科技大学大气光学实验室Tanre D.等人研发了5S模型,5S模型不仅可以用来模拟太阳辐射传输过程,还可以计算辐亮度.该模型假设大气吸收和散射作用可以耦合. 6S模型 6 ...

  8. mysql创建存储过程意义_浅谈一下mySql中创建存储过程

    首先说一下为什么要使用存储过程,存储过程是在数据库中预编译的程序代码,其执行效率显然要比从程序端传过去的sql语句要高的多,这样既可以节省网络带宽,又可以加快sql的执行速度,可以很好的提高系统的性能 ...

  9. 手机热点设置虚拟服务器,以三款路由器为例,浅谈手机热点中继路由器的设置方法...

    以三款路由器为例,浅谈手机热点中继路由器的设置方法 2017-01-23 22:37:04 43点赞 328收藏 36评论 前言 各位值友,新年好! 这篇文章写一点路由使用心得.在此之前,我和许多人一 ...

  10. java中单例的应用_浅谈Java中单例模式的几种应用

    目录 浅谈Java中单例模式的几种应用 第一种:懒汉式 第二种:饿汉式 第三种:双重检索式 第四种:注册登记式 第五种:内部类形式 浅谈Java中单例模式的几种应用 日常开发中,为了提高我们系统中对象 ...

最新文章

  1. 一份来自贾扬清的AI修炼指南:不存在算法工程师,调参侠没有市场
  2. 【Android 安全】DEX 加密 ( DEX 加密原理 | DEX 加密简介 | APK 文件分析 | DEX 分割 )
  3. ASP.NET实现用户在线检测的类源码[转收藏]
  4. 解决方案:无源(PON)光网络在弱电工程中的应用
  5. python元类、反射及双线方法
  6. js实现倒计时 类似团购网站
  7. 《左手MongoDB右手Redis》第3章笔记-robo3t上进行增删改查
  8. em算法python代码_EM算法的python实现的方法步骤
  9. windows操作系统_windows下用深度系统安装器安装深度操作系统实现双系统分别运行...
  10. 如何应对训练的神经网络不工作?
  11. gcms基峰有什么用_金鉴实验室 | 气相质谱(GCMS)
  12. 微信通话服务器有录音保存吗,微信语音通话如何录音保存并回放
  13. 流程图与活动图的区别与联系
  14. modelsim 波形设置显示时间单位
  15. endnote如何设置文献样式
  16. Linux wine系列——Ubuntu20.04安装wine教程 [2021.3]
  17. 2021年全球与中国测光表行业市场规模及发展前景分析
  18. mysql韩语排序_MySQL汉字字段按拼音排序
  19. BAT实现文件下载功能
  20. 使用security和jwt进行安全登录

热门文章

  1. Easy Less生成.ttss后缀文件的配置
  2. CorelDraw手表实例实操作让你全面了解技术的综合应用
  3. 服务器里怎么设置微信多开,企业微信多开的4种方法
  4. HIVE一些字符处理
  5. Python脚本提取氨基酸序列的 因子复杂度
  6. 计算机内存不足 程序无法运行,计算机内存不足处理方法
  7. DNS是什么意思?DNS怎么设置?
  8. 使用OEM复制数据库
  9. 计算机科学的特刊,科学网—SCI收录期刊《IEEE计算机图形与应用杂志》特刊预报 - 万跃华的博文...
  10. NETWARE系统加入服务器,如何在 Netware 服务器中安装多块网卡