—————————————————————————————————————

zmq_pgm(7)         ØMQ Manual - ØMQ/3.2.5

Name

zmq_pgm – ØMQ 使用PGM 进行可靠的多路传输

Synopsis

PGM(实际通用多路广播)是一个基于IP网络协议的可靠多路广播。

Description

ZMQ在实现PGM的时候有两种变体,将PGM数据报直接放在IP数据报的上一层的标准协议,在RFC文档3208中定义(pgm传输);和“封装PGM”或叫EPGM,此时PGM数据报被封装在UDP数据报内部(epgm传输方式)。

pgm和epgm传输方式只能被ZMQ_PUB和ZMQ_SUB两种socket使用。

默认情况下,PGM的socket的速率是被限制的。参见zmq_setsockopt(3)函数的ZMQ_RATE和ZMQ_RECOVERY_IVL属性以获取更多细节。

pgm的实现需要访问原始的IP套接字(socket)。附加的功能可能需要访问操作系统的操作。不需要与其它PGM的实现进行互操作性的应用程序可以使用epgm,这样不需要请求任何特权。

Addressing

一个ZMQ的终结点是一个字符串,包括transport ://跟着一个address。transport指明了要使用的底层协议。address指明了传输方式要连接的地址。

对于PGM传输,transport是pgm,对于EPGM协议,transport是epgm。Address的含义在下面定义。

连接一个socket

当使用zmq_connect()函数以pgm或epgm传输方式连接到另一端的的地址是时,终结点(endpoint)应该是一个网口跟一个冒号,再跟一个多播地址,再跟一个冒号,然后是一个端口号。

一个网口可能是下面定义中的一种:

● 由操作系统定义的网口名称

● 分配给这个网口的主IPv4地址,以数字形式表示

网口名不应该以任何形式标准化,而且应该假定是任意的和平台相关的。在Win32平台上没有短网口名,而只有IPv4地址可以用来指定一个网口。网口部分可以省略,此时就会选择默认的网口。

一个多播地址是以IPv4的数字形式表示的。

有线格式(Wire format)

ZMQ会将连续的PGM数据报看做一个单一的连续数据流,ZMQ消息不需要和PGM的数据报进行对齐,而且一个ZMQ消息可能跨越了几个PGM数据报。数据流包括封装在zmq_tcp(7)中定义的消息帧中。

PGM数据报负荷

接下来的ABNF程序代表了一个被ZMQ使用的单一的PGM数据报的负荷:

datagram =(offset data)

offset=2OCTET

data= *OCTET

为了后来连接进来的客户端区分消息边界,每一个PGM数据报负荷使用一个16bit的网络字节开始,指定数据报中第一个消息帧的开始,或者如果这个数据报包含一个大数数据报中的中间部分,则包含0xFFFF。

注意:offset指明了第一个消息的起始位置,而不是消息的第一帧。所以,如果在数据包开始的时候,传输几个消息帧,offset会被忽略,并且指向包中第一个被初始化的部分。

下面的图表说明了一个单一的PGM数据报负荷的样式:

+------------------+----------------------+

| offset (16 bits) | data |

+------------------+----------------------+

下面的图表进一步说明了在连续的PGM数据报中三个ZMQ实例的布局:

First datagram payload+--------------+-------------+---------------------+

| Frame offset | Frame 1 | Frame 2, part 1 |

| 0x0000 | (Message 1) | (Message 2, part 1) |

+--------------+-------------+---------------------+Second datagram payload+--------------+---------------------+

| Frame offset | Frame 2, part 2 |

| 0xFFFF | (Message 2, part 2) |

+--------------+---------------------+Third datagram payload+--------------+----------------------------+-------------+

| Frame offset | Frame 2, final 8 bytes | Frame 3 |

| 0x0008 | (Message 2, final 8 bytes) | (Message 3) |

+--------------+----------------------------+-------------+

Example

连接一个socket

//Connecting to the multicast address 239.192.1.1, port 5555,//using the first Ethernet network interface on Linux//and the Encapsulated PGM protocol

rc = zmq_connect(socket, "epgm://eth0;239.192.1.1:5555");

assert (rc== 0);//Connecting to the multicast address 239.192.1.1, port 5555,//using the network interface with the address 192.168.1.1//and the standard PGM protocol

rc = zmq_connect(socket, "pgm://192.168.1.1;239.192.1.1:5555");

assert (rc== 0);

See also

zmq_connect(3)  zmq_setsockopt(3)  zmq_tcp(7)  zmq_ipc(7)  zmq_inproc(7)  zmq(7)

Authors

This ØMQ manual page was written by Pieter Hintjens , Martin Sustrik  and Martin Lucina .

Web site design and content is copyright (c) 2007-2012 iMatix Corporation. Contact us for professional support. Site content licensed under the Creative Commons Attribution-Share Alike 3.0 License. ØMQ is copyright (c) Copyright (c) 2007-2012 iMatix Corporation and Contributors. ØMQ is free software licensed under the LGPL. ØMQ, ZeroMQ, and 0MQ are trademarks of iMatix Corporation. Terms of Use — Privacy

Policy

翻译:风波

原文:http://www.cnblogs.com/fengbohello/p/4336261.html

linux编译带pgm的zmq,ZeroMQ接口函数之 :zmq_pgm – ØMQ 使用PGM 进行可靠的多路传输...相关推荐

  1. ZeroMQ接口函数之 :zmq_pgm – ØMQ 使用PGM 进行可靠的多路传输

    ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ----------------------------------- ...

  2. ZeroMQ接口函数之 :zmq - 0MQ 轻量级消息传输内核

    官方网址:http://api.zeromq.org/4-0:zmq zmq(7) 0MQ Manual - 0MQ/3.2.5 Name zmq – ØMQ 轻量级消息传输内核 Synopsis # ...

  3. ZeroMQ接口函数之 :zmq_strerror - 获取ZMQ错误描述字符串

    Name zmq_strerror - 获取ZMQ错误描述字符串 Synopsis const char *zmq_strerror (int errnum); Description zmq_str ...

  4. ZeroMQ接口函数之 :zmq_msg_init - 初始化一个空的ZMQ消息结构

    ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq_msg_init zmq_msg_init(3) ØMQ Manual - ØMQ/3.2.5 Name zmq_ ...

  5. ZeroMQ接口函数之 :zmq_msg_init_data - 从一个指定的存储空间中初始化一个ZMQ消息对象的数据...

    ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq_msg_init_data zmq_msg_init_data(3) ØMQ Manual - ØMQ/3.2.5 ...

  6. ZeroMQ接口函数之 :zmq_ctx_shutdown - 停止一个ZMQ context

    ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_ctx_shutdown zmq_ctx_shutdown(3) ØMQ Manual - ØMQ/4.1.0 N ...

  7. ZeroMQ接口函数之 :zmq_setsockopt –设置ZMQ socket的属性

    Name zmq_setsockopt –设置ZMQ socket的属性 Synopsis int zmq_setsockopt (void *socket, int option_name, con ...

  8. ZeroMQ接口函数之 :zmq_ipc – ZMQ本地进程间通信传输协议

    ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ----------------------------------- ...

  9. ZeroMQ接口函数之 :zmq_tcp – 使用TCP协议的ØMQ网络单播协议

    ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-tcp zmq_tcp(7)          ØMQ Manual - ØMQ/4.1.0 Name zmq_t ...

最新文章

  1. Centos6.5 配置  DRBD8.4.3
  2. excel数据库_将excel文件导入mysql数据库教程(PHP实现)
  3. arcgis中python坡度计算_ArcGIS不同坡度植被覆盖率分析步骤
  4. Windows系统下使用Sublime搭建nodejs环境
  5. 67.Java垃圾收集机制\对象引用\垃圾对象的判定\垃圾收集算法\标记—清除算法\标记—整理算法\分代收集\垃圾收集器\性能调优
  6. Jar包部署-设置打包方式为jar
  7. jQuery——siblings()方法
  8. .Net Core with 微服务 - 使用 AgileDT 快速实现基于可靠消息的分布式事务
  9. jzoj3844-统计损失【树形dp,换根法】
  10. ArchLinux学习之环境变量
  11. Django - - - -视图层之视图函数(views)
  12. mysql df_DF学Mysql(一)——数据库基本操作
  13. [转]JAVA与.NET DES加密解密
  14. iOS开发之导航栏(navigationController)透明化
  15. 敏感词库快速添加到mysql数据库,并在页面使用方法过滤敏感词
  16. 前端-回到顶部效果总结
  17. ADC0808确定地址及查询方式示例
  18. 冯乐乐之六,基础光照模型
  19. matlab 中没有imrotate,matlab – 在没有图像处理工具箱的情况下旋转图像
  20. java 自定义控件_自定义控件的开发

热门文章

  1. JZOJ 1237. 餐桌
  2. 基于virtualbox安装ubuntu18.04
  3. 循序渐进学.Net Core Web Api开发系列【7】:项目发布到CentOS7
  4. bzoj 3190 赛车 半平面交
  5. 内存泄露与内存溢出的区别
  6. mybatis之xml中日期时间段查询的sql语句
  7. mysql中怎样查看和删除唯一索引
  8. 【报告分享】2021制造业与人工智能创新应用发展报告.pdf(附下载链接)
  9. 【干货】数字经济百项场景.pdf(附下载链接)
  10. 业界分享 | 阿里达摩院:超大规模预训练语言模型落地实践