ZeroMQ接口函数之 :zmq_pgm – ØMQ 使用PGM 进行可靠的多路传输
ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html
—————————————————————————————————————
ZeroMQ 官方地址:http://api.zeromq.org/4-0:zmq-pgm
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 ( bits) | data |
+------------------+----------------------+
下面的图表进一步说明了在连续的PGM数据报中三个ZMQ实例的布局:
First datagram payload
+--------------+-------------+---------------------+
| Frame offset | Frame | Frame , part |
| 0x0000 | (Message ) | (Message , part ) |
+--------------+-------------+---------------------+ Second datagram payload
+--------------+---------------------+
| Frame offset | Frame , part |
| 0xFFFF | (Message , part ) |
+--------------+---------------------+ Third datagram payload +--------------+----------------------------+-------------+
| Frame offset | Frame , final bytes | Frame |
| 0x0008 | (Message , final bytes) | (Message ) |
+--------------+----------------------------+-------------+
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 == );
// 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 == );
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 <ph@imatix.com>, Martin Sustrik <sustrik@250bpm.com> and Martin Lucina <mato@kotelna.sk>.
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
翻译:风波
mail : fengbohello@qq.com
ZeroMQ接口函数之 :zmq_pgm – ØMQ 使用PGM 进行可靠的多路传输的更多相关文章
- ZeroMQ接口函数之 :zmq - 0MQ 轻量级消息传输内核
官方网址:http://api.zeromq.org/4-0:zmq zmq(7) 0MQ Manual - 0MQ/3.2.5 Name zmq – ØMQ 轻量级消息传输内核 Synopsis # ...
- ZeroMQ接口函数之 :zmq_bind - 绑定一个socket
ZeroMQ 官方地址 : http://api.zeromq.org/4-0:zmq-bind zmq_bind(3) ZMQ Manual - ZMQ/3.2.5 Name zmq_bind - ...
- ZeroMQ接口函数之 :zmq_connect - 由一个socket创建一个对外连接
ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_connect zmq_connect(3) ØMQ Manual - ØMQ/3.2.5 Name zmq_c ...
- 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 ...
- ZeroMQ接口函数之 :zmq_inproc – ØMQ 本地进程内(线程间)传输方式
ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ——————————————————————————————————— ...
- ZeroMQ接口函数之 :zmq_curve – 安全的认证方式和保密方式
ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_curve zmq_curve(7) ØMQ Manual - ØMQ/4.1.0 Name zmq_curve ...
- ZeroMQ接口函数之 :zmq_proxy – 开始ZMQ内置代理
ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-proxy zmq_proxy(3) ØMQ Manual - ØMQ/4.1.0 Nam ...
- ZeroMQ接口函数之 :zmq_ipc – ZMQ本地进程间通信传输协议
ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ——————————————————————————————————— ...
- ZeroMQ接口函数之 :zmq_socket – 创建ZMQ套接字
ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ZeroMQ 官方地址:http://api.zeromq.org/4 ...
随机推荐
- [Nhibernate]对象状态
目录 写在前面 文档与系列文章 对象状态 瞬时态(Transient) 持久态(Persistent) 托管态(Detached) 对象状态转换 总结 写在前面 前面两篇文章介绍了SchemaExpo ...
- itrator控制迭代次数
<s:iterator value="diys" status="d" begin="0" end="10" st ...
- 商品库存“存取设计”,MySQL事务、表锁、行锁
MySQL 使用 SELECT ... FOR UPDATE 做事务写入前的确认 以MySQL 的InnoDB 为例,预设的 Tansaction isolation level 为 REPEATA ...
- iphone的click导致div变黑
-webkit-tap-highlight-color这个属性只用于iOS (iPhone和iPad).当你点击一个链接或者通过Javascript定义的可点击元素的时候,它就会出现一个半透明的灰色背 ...
- django 模板语法和三种返回方式
模板 for循环 {% for athlete in athlete_list %} <li>{{ athlete.name }}</li> {% endfor %} if语句 ...
- 十一. 一步步破解JEB 2.0demo版一
字符串解密算法还愿 jeb.jar为核心功能,所以主要分析这个 1. jar转dex在使用jeb分析 Android\sdk\build-tools\23.0.3 dx.bat --dex --out ...
- delphi xe4 程序添加管理员权限要求后不能调试的解决方法
环境: win7 企业版 xe4 问题: 把项目设置为需要管理员权限才能运行后,调试会弹出一个提示框,如图:
- Java Swing
参考帖子http://chenchaobox.blog.163.com/blog/static/6043759020127845945569/ http://wenku.baidu.com/link? ...
- java17
1:登录注册案例(理解) 2:Set集合(理解) (1)Set集合的特点 无序,唯一 (2)HashSet集合(掌握) A:底层数据结构是哈希表(是一个元素为链表的数组) B:哈希表底层依赖两个方法: ...
- POJ 2337 Catenyms(有向图的欧拉通路)
题意:给n个字符串(3<=n<=1000),当字符串str[i]的尾字符与str[j]的首字符一样时,可用dot连接.判断用所有字符串一次且仅一次,连接成一串.若可以,输出答案的最小字典序 ...