11 3 3 多播的程式設計

2021-05-14 14:05:10 字數 2608 閱讀 1827

多播的程式設計使用

setsockopt()

函式和getsockopt()

函式來實現,組播的選項是

ip層的,其選項值和含義參見

11.5

所示。表

11.5

多播相關的選項

getsockopt()/setsockopt()

的選項 含

義 ip_multicast_ttl

設定多播組資料的

ttl值

ip_add_membership

在指定介面上加入組播組

ip_drop_membership

退出組播組

ip_multicast_if

獲取預設介面或設定介面

ip_multicast_loop

禁止組播資料回送

1.選項

ip_multicase_ttl 選項

ip_multicast_ttl

允許設定超時

ttl,範圍為0~

255之間的任何值,例如:

unsigned char ttl=255;

setsockopt(s,ipproto_ip,ip_multicast_ttl,&ttl,sizeof(ttl));

2.選項

ip_multicast_if 選項

ip_multicast_if

用於設定組播的預設預設網路介面,會從給定的網路介面傳送,另乙個網路介面會忽略此資料。例如:

struct in_addr addr;

setsockopt(s,ipproto_ip,ip_multicast_if,&addr,sizeof(addr)); 引數

addr

是希望多播輸出介面的

ip位址,使用

inaddr_any

位址回送到預設介面。

預設情況下,當本機傳送組播資料到某個網路介面時,在

ip層,資料會回送到本地的回環介面,選項

ip_multicast_loop

用於控制資料是否回送到本地的回環介面。例如:

unsigned char loop;

setsockopt(s,ipproto_ip,ip_multicast_loop,&loop,sizeof(loop)); 引數

loop

設定為0

禁止回送,設定為

1允許回送。

3.選項

ip_add_membership

和ip_drop_membership

加入或者退出乙個組播組,通過選項

ip_add_membership

和ip_drop_member- ship

,對乙個結構

struct ip_mreq

型別的變數進行控制,

struct ip_mreq

原型如下:

struct ip_mreq ;

選項ip_add_membership

用於加入某個廣播組,之後就可以向這個廣播組傳送資料或者從廣播組接收資料。此選項的值為

mreq

結構,成員

imn_multiaddr

是需要加入的廣播組

ip位址,成員

imr_inte***ce

是本機需要加入廣播組的網路介面

ip位址。例如:

struct ip_mreq mreq;

setsockopt(s,ipproto_ip,ip_add_membership,&mreq,sizeof(mreq)); 使用

ip_add_membership

選項每次只能加入乙個網路介面的

ip位址到多播組,但並不是乙個多播組僅允許乙個主機

ip位址加入,可以多次呼叫

ip_add_membership

選項來實現多個

ip位址加入同乙個廣播組,或者同乙個

ip位址加入多個廣播組。當

imr_ inte***ce

為inaddr_any

時,選擇的是預設組播介面。

4.選項

ip_drop_membership 選項

ip_drop_membership

用於從乙個廣播組中退出。例如:

struct ip_mreq mreq;

setsockopt(s,ipprotp_ip,ip_drop_membership,&mreq,sizeof(sreq)); 其中

mreq

包含了在

ip_add_membership

中相同的值。

5.多播程式設計的框架

要進行多播的程式設計,需要遵從一定的程式設計框架,其基本順序如圖

11.6

所示。多播程式框架主要包含套接字初始化、設定多播超時時間、加入多播組、傳送資料、接收資料以及從多播組中離開幾個方面。其步驟如下:(1

)建立乙個

socket。(

2)然後設定多播的引數,例如超時時間

ttl、本地回環許可

loop等。(

3)加入多播組。(4

)傳送和接收資料。(5

)從多播組離開。

圖11.6多播的程式設計流程

Linux C C 程式設計 Udp組播(多播)

ip組播通訊必須依賴於ip多播位址,在ipv4中它是乙個d類ip位址,範圍從224.0.0.0到239.255.255.255,並被劃分為區域性鏈結多播位址 預留多播位址和管理許可權多播位址三類 預留多播位址為 224.0.1.0 238.255.255.255,可用於全球範圍 如internet ...

網路程式設計多播 Multicast

ip多播 也稱多址廣播或組播 技術,是一種允許一台或多台主機 多播源 傳送單一資料報到多台主機 一次的,同時的 的tcp ip網路技術。通俗點講,多播也稱組播,大概可以理解為分組廣播的意思,是介於單播和廣播之間的一種通訊機制,使用多播方式,可以實現對區域網內一組特定的主機進行通訊,對區域網節點分組,...

socket程式設計(3)廣播 多播

廣播 廣播是指在乙個區域網中向所有的網上節點傳送資訊。這是udp連線的一種 廣播有乙個廣播組,即只有乙個廣播組內的節點才能收到發往這個廣播組的資訊。什麼決定了乙個廣播組呢,就是埠號,區域網內乙個節點,如果設定了廣播屬性並監聽了埠號a後,那麼他就加入了a組廣播,這個區域網內所有發往廣播埠a的資訊他都收...