日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2025/5/22 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ZeroMQ接口函数之 :zmq_pgm – ØMQ 使用PGM 进行可靠的多路传输 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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 進(jìn)行可靠的多路傳輸

Synopsis

PGM(實際通用多路廣播)是一個基于IP網(wǎng)絡(luò)協(xié)議的可靠多路廣播。

Description

ZMQ在實現(xiàn)PGM的時候有兩種變體,將PGM數(shù)據(jù)報直接放在IP數(shù)據(jù)報的上一層的標(biāo)準(zhǔn)協(xié)議,在RFC文檔3208中定義(pgm傳輸);和“封裝PGM”或叫EPGM,此時PGM數(shù)據(jù)報被封裝在UDP數(shù)據(jù)報內(nèi)部(epgm傳輸方式)。

pgm和epgm傳輸方式只能被ZMQ_PUB和ZMQ_SUB兩種socket使用。

默認(rèn)情況下,PGM的socket的速率是被限制的。參見zmq_setsockopt(3)函數(shù)的ZMQ_RATE和ZMQ_RECOVERY_IVL屬性以獲取更多細(xì)節(jié)。

pgm的實現(xiàn)需要訪問原始的IP套接字(socket)。附加的功能可能需要訪問操作系統(tǒng)的操作。不需要與其它PGM的實現(xiàn)進(jìn)行互操作性的應(yīng)用程序可以使用epgm,這樣不需要請求任何特權(quán)。

Addressing

一個ZMQ的終結(jié)點(diǎn)是一個字符串,包括transport ://跟著一個address。transport指明了要使用的底層協(xié)議。address指明了傳輸方式要連接的地址。

對于PGM傳輸,transport是pgm,對于EPGM協(xié)議,transport是epgm。Address的含義在下面定義。

連接一個socket

當(dāng)使用zmq_connect()函數(shù)以pgm或epgm傳輸方式連接到另一端的的地址是時,終結(jié)點(diǎn)(endpoint)應(yīng)該是一個網(wǎng)口跟一個冒號,再跟一個多播地址,再跟一個冒號,然后是一個端口號。

一個網(wǎng)口可能是下面定義中的一種:

●?由操作系統(tǒng)定義的網(wǎng)口名稱

●?分配給這個網(wǎng)口的主IPv4地址,以數(shù)字形式表示

網(wǎng)口名不應(yīng)該以任何形式標(biāo)準(zhǔn)化,而且應(yīng)該假定是任意的和平臺相關(guān)的。在Win32平臺上沒有短網(wǎng)口名,而只有IPv4地址可以用來指定一個網(wǎng)口。網(wǎng)口部分可以省略,此時就會選擇默認(rèn)的網(wǎng)口。

一個多播地址是以IPv4的數(shù)字形式表示的。

有線格式(Wire format)

ZMQ會將連續(xù)的PGM數(shù)據(jù)報看做一個單一的連續(xù)數(shù)據(jù)流,ZMQ消息不需要和PGM的數(shù)據(jù)報進(jìn)行對齊,而且一個ZMQ消息可能跨越了幾個PGM數(shù)據(jù)報。數(shù)據(jù)流包括封裝在zmq_tcp(7)中定義的消息幀中。

PGM數(shù)據(jù)報負(fù)荷

接下來的ABNF程序代表了一個被ZMQ使用的單一的PGM數(shù)據(jù)報的負(fù)荷:

datagram = (offset data) offset = 2OCTET data = *OCTET

為了后來連接進(jìn)來的客戶端區(qū)分消息邊界,每一個PGM數(shù)據(jù)報負(fù)荷使用一個16bit的網(wǎng)絡(luò)字節(jié)開始,指定數(shù)據(jù)報中第一個消息幀的開始,或者如果這個數(shù)據(jù)報包含一個大數(shù)數(shù)據(jù)報中的中間部分,則包含0xFFFF。

注意:offset指明了第一個消息的起始位置,而不是消息的第一幀。所以,如果在數(shù)據(jù)包開始的時候,傳輸幾個消息幀,offset會被忽略,并且指向包中第一個被初始化的部分。

下面的圖表說明了一個單一的PGM數(shù)據(jù)報負(fù)荷的樣式:

+------------------+----------------------+ | offset (16 bits) | data | +------------------+----------------------+

下面的圖表進(jìn)一步說明了在連續(xù)的PGM數(shù)據(jù)報中三個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 <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

?

翻譯:風(fēng)波

mail : fengbohello@qq.com

?

總結(jié)

以上是生活随笔為你收集整理的ZeroMQ接口函数之 :zmq_pgm – ØMQ 使用PGM 进行可靠的多路传输的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。