在Internet上,多媒體業務諸如:流媒體,視頻會議和視頻點播等,正在成為信息傳送的重要組成部份。點對點傳輸的單播方式不能適應這1類業務傳輸特性--單點發送多點接收,由于服務器必須為每個接收者提供1個相同內容的IP報文拷貝,同時網絡上也重復地傳輸相同內容的報文,占用了大量資源。在這類情況下組播(multicast)應運而生,它的出現解決了1個主機向特定的多個接收者發送消息的方法。1989年,IETF通過RFC1112,定義了Internet上的組播方式。
主機組的成員可以動態變化,主機有權選擇加入或退出某個主機組。主機可以加入多個主機組,也能夠向自己沒有加入的主機組發送數據。主機組有兩種:永久組和臨時組。永久組的IP地址是周知的,由Internet管理機構分配,是保存地址。臨時組的地址則使用除永久組地址外的非保存D類地址。
IP組播分組在互聯網上的轉發由支持組播的路由器來處理。主機發出的IP組播分組在本子網內被所有主機組成員接收,同時與該子網直接相連的組播路由器會把組播報文 轉發到所有包括該主機組成員的網絡上。組播報文傳遞的范圍由報文的生存期值(TTL, Time-to-Live)決定,如果TTL值等于或小于設置的路由器端口TTL門限值(TTL Threshold),路由器將不再轉發該報文。
單個數據流可以發送到多個客戶真個組播能力已成為大多數多媒體利用的傳輸手段。組播技術利用1個IP地址使IP數據報文 發送到用戶組。IP組播采取了特殊定義的目的IP地址和目的MAC地址。IGMP為客戶端提供加入和離開組播組的方式。CGMP使路由器為交換機配置組播 轉發表,并告知交換機當前的組播成員。指派路由器根據對網絡中的組播成員的散布和使用的不同采取密集模式DM或稀疏模式SM組播路由協議來構造組播的散布 樹,而這個散布樹將在源子網和組播組之間肯定1條唯1路徑以提高數據傳輸效力。
IP組播技術需要3層交換機,或路由器支持,通常利用于專用網絡,如:教育網、**網和企業內部網等,使用IP組播技術可以極大的下降數據發送方的帶寬要求,最大的好處是可讓數據接收方的數量不計其數,而不會造成網絡的阻塞。
AnyChatPlatform Core SDK V4.0新增了對IP組播技術的支持,下面介紹如何使用相干的API接口,典型的加入多播組,并向多播組發送數據的代碼以下:
1.//設置本地組播策略
2.DWORD dwMultiCastPolitic = 1;
3.BRAC_SetSDKOption(BRAC_SO_NETWORK_MULTICASTPOLITIC,(constchar*)&dwMultiCastPolitic,sizeof(DWORD));
4.
5.//加入多播組
6.DWORD dwFlags = BRAC_MCFLAGS_JOINGROUP | BRAC_MCFLAGS_SENDDATA |BRAC_MCFLAGS_RECVDATA;
7.BRAC_MultiCastControl("224.2.3.4",9810, "",5, dwFlags);
上面的代碼中“dwFlags”標志唆使加入多播組“224.2.3.4:9810”,本地的數據通過該多播組進行傳輸,同時,自己也從該多播組接收其它用戶的音視頻數據。
當需要本地發送組播數據時,設置本地組播策略是必須的,由于系統默許是采取服務器所配置的網絡數據傳輸策略(AnyChatCoreServer.ini中的“RoutingPolicy”配置項)進行數據發送,如不設置本地組播策略,則不會向組播地址發送數據,設置以后,可以將本地的數據發送多個組播地址和端口,以下面的代碼表示音視頻數據將向“224.2.3.4:9810”、“224.2.3.4:9812”兩個組播端口廣播數據:
1.//設置本地組播策略
2.DWORD dwMultiCastPolitic = 1;
3.BRAC_SetSDKOption(BRAC_SO_NETWORK_MULTICASTPOLITIC,(constchar*)&dwMultiCastPolitic,sizeof(DWORD));
4.
5.//加入多播組
6.DWORD dwFlags = BRAC_MCFLAGS_JOINGROUP | BRAC_MCFLAGS_SENDDATA;
7.BRAC_MultiCastControl("224.2.3.4",9810, "",5, dwFlags);
8.BRAC_MultiCastControl("224.2.3.4",9812, "",5, dwFlags);
當系統有多塊網卡,而需要向其中某1塊網卡連接的網絡進行組播時,可通過“BRAC_MultiCastControl”的第3個參數來指定便可,第3個參數是指定網卡的IP地址。
上一篇 無線充電Qi通信協議分析