标签:
1、使用TCP的单播传输:zmq_tcp(7) 1.1 名称zmq_tcp - 使用TCP的ZMQ单播传输
1.2 提要TCP是一种无处不在,可靠的单播传输。当通过具有ZMQ的网络连接漫衍式应用措施时,使用TCP传输可能是您的首选。
1.3 解决ZMQ端点是一个由transport://后跟一个地点构成的字符串。 transport指定要使用的根本协议。该地点指定要连接的传输特定地点。
对付TCP传输,传输是tcp,地点部分的含义如下界说。
1.3.1 将本地地点分配给套接字当使用带有tcp传输的zmq_bind()将套接字本地地点分配给套接字时,端点将被解释为一个接口,后跟一个冒号和要使用的TCP端标语。
接口可以由以下任何一种指定:
通配符*暗示所有可用的接口。
分配给接口的主要IPv4或IPv6地点,以其数字暗示形式。
操纵系统界说的非可移植接口名称。
TCP端标语可以通过以下方法指定:
一个数值,凡是在POSIX系统上赶过1024。
通配符*暗示系统分配的姑且端口。
使用姑且端口时,挪用者应使用ZMQ_LAST_ENDPOINT套接字选项检索实际分配的端口。有关详细信息,请参阅zmq_getsockopt(3)。
1.3.2 从套接字解除通配符地点当在zmq_bind()中使用通配符*端点时,挪用者应使用从ZMQ_LAST_ENDPOINT套接字选项中获得的实际endpoind使用zmq_unbind()从套接字解除绑定此端点。
1.3.3 连接一个socket当使用带tcp传输的zmq_connect()将套接字连接到对等地点时,端点应被解释为对等地点,后跟冒号和要使用的TCP端标语。您可以选择指定一个source_endpoint作为连接的源地点; tcp:// source_endpoint;‘endpoint‘,详见上面的接口说明。
对等地点可以由以下任一项指定:
对等体的DNS名称。
对等体的IPv4或IPv6地点,以其数字暗示形式。
注意:有关TCP传输使用的ZeroMQ动静传输协议(ZMTP)的说明可以在:15找到
2、使用PGM的可靠组播传输:zmq_pgm(7) 2.1 名称zmq_pgm - 使用PGM的ZMQ可靠多播传输
2.2 提要PGM(Pragmatic General Multicast)是IP网络上可靠的数据组播传输协议。
2.3 描述ZMQ实现PGM的两种变体,PGM数据报直接在RFC 3208(pgm传输)和“封装PGM”或EPGM界说的IP数据报之上分层,此中PGM数据报封装在UDP数据报内(epgm传输)。
pgm和epgm传输只能与ZMQ_PUB和ZMQ_SUB套接字类型一起使用。
别的,PGM套接字默认是速率限制的。有关详细信息,请参阅zmq_setsockopt(3)中记录的ZMQ_RATE和ZMQ_RECOVERY_IVL选项。
pgm传输实现需要访谒原始IP套接字。在此操纵的某些操纵系统上可能需要特别的权限。鼓励不要求与其他PGM实现直接互操纵的应用措施使用epgm传输,而不需要任何特殊权限。
2.4 解决ZMQ端点是一个由transport://后跟一个地点构成的字符串。 transport指定要使用的根本协议。 该地点指定要连接的传输特定地点。
对付PGM运输,运输是pgm,而对付EPGM协议,,运输是epgm。 地点部分的含义界说如下。
2.5 连接一个socket当使用带pgm或epgm传输的zmq_connect()将套接字连接到对等地点时,端点将被解释为一个接口,后跟一个分号,后跟一个多播地点,后跟一个冒号和一个端标语。
接口可以由以下任何一种指定:
操纵系统界说的接口名称。
以数字暗示形式分配给接口的主IPv4地点。
注:接口名称没有以任何方法标准化,应该被认为是任意的并且取决于平台。 在Win32平台上,不存在短接口名称,因此只有主IPv4地点可用于指定接口。 接口部分可以省略,在这种情况下,将会选择默认的接口部分。多播地点由其数字暗示中的IPv4多播地点指定。
2.5 Wire格局持续的PGM数据报被ZMQ解释为单个持续的数据流,此中ZMQ动静不必然与PGM数据报界限对齐,并且单个ZMQ动静可以跨越几个PGM数据报。 这个数据流由zmq_tcp(7)中描述的封装在帧中的ZMQ动静构成。
2.5.1 Pgm数据报有效载荷以下ABNF语法暗示由ZMQ使用的单个PGM数据报的有效负载:
datagram
= (offset data)
offset
= 2OCTET
data
= *OCTET
为了延迟插手消费者能够识别动静界限,每个PGM数据报有效载荷以网络字节挨次中的16位无标记整数开始,指定数据报中第一个动静帧的偏移或者如果数据报包罗值0xFFFF 仅包罗较大动静的中间部分。
请注意,偏移指定了第一条动静的开始位置,而不是第一条动静部分。 因此,如果在数据包的开头有尾随动静部分,则偏移将忽略它们并指向数据包中的第一个初始动静部分。
下图说明了单个PGM数据报有效载荷的构造:
+------------------+----------------------+
| offset (16 bits) |
data
|
+------------------+----------------------+
下图进一步说明了三个示例ZMQ帧在持续的PGM数据报载荷中的构造: