用Visual C++在局域網(wǎng)實(shí)現(xiàn)IP多播
發(fā)布時(shí)間:2008/8/23 0:00:00 訪問(wèn)次數(shù):466
在局域網(wǎng)中,管理員常常需要將某條信息發(fā)送給一組用戶。如果使用一對(duì)一的發(fā)送方法,雖然是可行的,但是過(guò)于麻煩,也常會(huì)出現(xiàn)漏發(fā)、錯(cuò)發(fā)。為了更有效的解決這種組通信問(wèn)題,出現(xiàn)了一種多播技術(shù)(也常稱為組播通信),它是基于ip層的通信技術(shù)。為了幫助讀者理解,下面將簡(jiǎn)要的介紹一下多播的概念。
眾所周知,普通ip通信是在一個(gè)發(fā)送者和一個(gè)接收者之間進(jìn)行的,我們常把它稱為點(diǎn)對(duì)點(diǎn)的通信,但對(duì)于有些應(yīng)用,這種點(diǎn)對(duì)點(diǎn)的通信模式不能有效地滿足實(shí)際應(yīng)用的需求。例如:一個(gè)數(shù)字電話會(huì)議系統(tǒng)由多個(gè)會(huì)場(chǎng)組成,當(dāng)在其中一個(gè)會(huì)場(chǎng)的參會(huì)人發(fā)言時(shí),要求其它會(huì)場(chǎng)都能即時(shí)的得到此發(fā)言的內(nèi)容,這是一個(gè)典型的一對(duì)多的通信應(yīng)用,通常把這種一對(duì)多的通信稱為多播通信。采用多播通信技術(shù),不僅可以實(shí)現(xiàn)一個(gè)發(fā)送者和多個(gè)接收者之間進(jìn)行通信的功能,而且可以有效減輕網(wǎng)絡(luò)通信的負(fù)擔(dān),避免資源的無(wú)謂浪費(fèi)。
廣播也是一種實(shí)現(xiàn)一對(duì)多數(shù)據(jù)通信的模式,但廣播與多播在實(shí)現(xiàn)方式上有所不同。廣播是將數(shù)據(jù)從一個(gè)工作站發(fā)出,局域網(wǎng)內(nèi)的其他所有工作站都能收到它。這一特征適用于無(wú)連接協(xié)議,因?yàn)閘an上的所有機(jī)器都可獲得并處理廣播消息。使用廣播消息的不利之處是每臺(tái)機(jī)器都必須對(duì)該消息進(jìn)行處理。多播通信則不同,數(shù)據(jù)從一個(gè)工作站發(fā)出后,如果在其它lan上的機(jī)器上面運(yùn)行的進(jìn)程表示對(duì)這些數(shù)據(jù)"有興趣",多播數(shù)據(jù)才會(huì)制給它們。
本實(shí)例由sender和receiver兩個(gè)程序組成,sender用戶從控制臺(tái)上輸入多播發(fā)送數(shù)據(jù),receiver端都要求加入同一個(gè)多播組,完成接收sender發(fā)送的多播數(shù)據(jù)。
一、實(shí)現(xiàn)方法
1、 協(xié)議支持
并不是所有的協(xié)議都支持多播通信,對(duì)win32平臺(tái)而言,僅兩種可從winsock內(nèi)訪問(wèn)的協(xié)議(ip/atm)才提供了對(duì)多播通信的支持。因通常通信應(yīng)用都建立在tcp/ip協(xié)議之上的,所以本文只針對(duì)ip協(xié)議來(lái)探討多播通信技術(shù)。
支持多播通信的平臺(tái)包括windows ce 2.1、windows 95、windows 98、windows nt 4、windows 2000和windowsxp。自2.1版開(kāi)始,windows ce才開(kāi)始實(shí)現(xiàn)對(duì)ip多播的支持。本文實(shí)例建立在windowsxp專業(yè)版平臺(tái)上。
2、多播地址
ip采用d類地址來(lái)支持多播。每個(gè)d類地址代表一組主機(jī)。共有28位可用來(lái)標(biāo)識(shí)小組。所以可以同時(shí)有多達(dá)25億個(gè)小組。當(dāng)一個(gè)進(jìn)程向一個(gè)d類地址發(fā)送分組時(shí),會(huì)盡最大的努力將它送給小組的所有成員,但不能保證全部送到。有些成員可能收不到這個(gè)分組。舉個(gè)例子來(lái)說(shuō),假定五個(gè)節(jié)點(diǎn)都想通過(guò)i p多播,實(shí)現(xiàn)彼此間的通信,它們便可加入同一個(gè)組地址。全部加入之后,由一個(gè)節(jié)點(diǎn)發(fā)出的任何數(shù)據(jù)均會(huì)一模一樣地復(fù)制一份,發(fā)給組內(nèi)的每個(gè)成員,甚至包括始發(fā)數(shù)據(jù)的那個(gè)節(jié)點(diǎn)。d類i p地址范圍在244.0.0.0到239.255.255.255之間。它分為兩類:永久地址和臨時(shí)地址。永久地址是為特殊用途而保留的。比如,244.0.0.0根本沒(méi)有使用(也不能使用),244.0.0.1代表子網(wǎng)內(nèi)的所有系統(tǒng)(主機(jī)),而244.0.0.2代表子網(wǎng)內(nèi)的所有路由器。在rfc 1700文件中,提供了所有保留地址的一個(gè)詳細(xì)清單。該文件是為特殊用途保留的所有資源的一個(gè)列表,大家可以找來(lái)作為參考。"internet分配數(shù)字專家組"(i a n a)負(fù)責(zé)著這個(gè)列表的維護(hù)。在表1中,我們總結(jié)了目前標(biāo)定為"保留"的一些地址。臨時(shí)組地址在使用前必須先創(chuàng)建,一個(gè)進(jìn)程可以要求其主機(jī)加入特定的組,它也能要求其主機(jī)脫離該組。當(dāng)主機(jī)上的最后一個(gè)進(jìn)程脫離某個(gè)組后,該組地址就不再在這臺(tái)主機(jī)中出現(xiàn)。每個(gè)主機(jī)都要記錄它的進(jìn)程當(dāng)前屬于哪個(gè)組。
表1 部分永久地址說(shuō)明
地 址 說(shuō) 明
地 址 | 說(shuō) 明 |
244.0.0.1 | 基本地址(保留) |
244.0.0.1 | 子網(wǎng)上的所有系統(tǒng) |
244.0.0.2 | 子網(wǎng)上的所有路由器 |
244.0.0.5 | 子網(wǎng)上所有ospf路由器 |
244.0.0.6 | 子網(wǎng)上所有指定的ospf路由器 |
244.0.0.9 | rip第2版本組地址 |
244.0.1.1 | 網(wǎng)絡(luò)時(shí)間協(xié)議 |
244.0.1.24 | wins服務(wù)器組地址 |
3、 多播路由器
多播由特殊的多播路由器來(lái)實(shí)現(xiàn),多播路由器同時(shí)也可以是普通路由器。各個(gè)多播路由器每分鐘發(fā)送一個(gè)硬件多播信息給子網(wǎng)上的主機(jī)(目的地址為244.0.0.1),要求它們報(bào)告其進(jìn)程當(dāng)前所屬的是哪一組,各主機(jī)將它感興趣的d類地址返回。這些詢問(wèn)和響應(yīng)分組使用igmp(internet group management protocol),它大致類似于icmp。它只有兩種分組:詢問(wèn)和響應(yīng),都有一個(gè)簡(jiǎn)單的固定格式,其中有效載荷字段的第一個(gè)字段是一些控制信息,第二字段是一個(gè)d類地址,在rfc1112中有詳細(xì)
在局域網(wǎng)中,管理員常常需要將某條信息發(fā)送給一組用戶。如果使用一對(duì)一的發(fā)送方法,雖然是可行的,但是過(guò)于麻煩,也常會(huì)出現(xiàn)漏發(fā)、錯(cuò)發(fā)。為了更有效的解決這種組通信問(wèn)題,出現(xiàn)了一種多播技術(shù)(也常稱為組播通信),它是基于ip層的通信技術(shù)。為了幫助讀者理解,下面將簡(jiǎn)要的介紹一下多播的概念。
眾所周知,普通ip通信是在一個(gè)發(fā)送者和一個(gè)接收者之間進(jìn)行的,我們常把它稱為點(diǎn)對(duì)點(diǎn)的通信,但對(duì)于有些應(yīng)用,這種點(diǎn)對(duì)點(diǎn)的通信模式不能有效地滿足實(shí)際應(yīng)用的需求。例如:一個(gè)數(shù)字電話會(huì)議系統(tǒng)由多個(gè)會(huì)場(chǎng)組成,當(dāng)在其中一個(gè)會(huì)場(chǎng)的參會(huì)人發(fā)言時(shí),要求其它會(huì)場(chǎng)都能即時(shí)的得到此發(fā)言的內(nèi)容,這是一個(gè)典型的一對(duì)多的通信應(yīng)用,通常把這種一對(duì)多的通信稱為多播通信。采用多播通信技術(shù),不僅可以實(shí)現(xiàn)一個(gè)發(fā)送者和多個(gè)接收者之間進(jìn)行通信的功能,而且可以有效減輕網(wǎng)絡(luò)通信的負(fù)擔(dān),避免資源的無(wú)謂浪費(fèi)。
廣播也是一種實(shí)現(xiàn)一對(duì)多數(shù)據(jù)通信的模式,但廣播與多播在實(shí)現(xiàn)方式上有所不同。廣播是將數(shù)據(jù)從一個(gè)工作站發(fā)出,局域網(wǎng)內(nèi)的其他所有工作站都能收到它。這一特征適用于無(wú)連接協(xié)議,因?yàn)閘an上的所有機(jī)器都可獲得并處理廣播消息。使用廣播消息的不利之處是每臺(tái)機(jī)器都必須對(duì)該消息進(jìn)行處理。多播通信則不同,數(shù)據(jù)從一個(gè)工作站發(fā)出后,如果在其它lan上的機(jī)器上面運(yùn)行的進(jìn)程表示對(duì)這些數(shù)據(jù)"有興趣",多播數(shù)據(jù)才會(huì)制給它們。
本實(shí)例由sender和receiver兩個(gè)程序組成,sender用戶從控制臺(tái)上輸入多播發(fā)送數(shù)據(jù),receiver端都要求加入同一個(gè)多播組,完成接收sender發(fā)送的多播數(shù)據(jù)。
一、實(shí)現(xiàn)方法
1、 協(xié)議支持
并不是所有的協(xié)議都支持多播通信,對(duì)win32平臺(tái)而言,僅兩種可從winsock內(nèi)訪問(wèn)的協(xié)議(ip/atm)才提供了對(duì)多播通信的支持。因通常通信應(yīng)用都建立在tcp/ip協(xié)議之上的,所以本文只針對(duì)ip協(xié)議來(lái)探討多播通信技術(shù)。
支持多播通信的平臺(tái)包括windows ce 2.1、windows 95、windows 98、windows nt 4、windows 2000和windowsxp。自2.1版開(kāi)始,windows ce才開(kāi)始實(shí)現(xiàn)對(duì)ip多播的支持。本文實(shí)例建立在windowsxp專業(yè)版平臺(tái)上。
2、多播地址
ip采用d類地址來(lái)支持多播。每個(gè)d類地址代表一組主機(jī)。共有28位可用來(lái)標(biāo)識(shí)小組。所以可以同時(shí)有多達(dá)25億個(gè)小組。當(dāng)一個(gè)進(jìn)程向一個(gè)d類地址發(fā)送分組時(shí),會(huì)盡最大的努力將它送給小組的所有成員,但不能保證全部送到。有些成員可能收不到這個(gè)分組。舉個(gè)例子來(lái)說(shuō),假定五個(gè)節(jié)點(diǎn)都想通過(guò)i p多播,實(shí)現(xiàn)彼此間的通信,它們便可加入同一個(gè)組地址。全部加入之后,由一個(gè)節(jié)點(diǎn)發(fā)出的任何數(shù)據(jù)均會(huì)一模一樣地復(fù)制一份,發(fā)給組內(nèi)的每個(gè)成員,甚至包括始發(fā)數(shù)據(jù)的那個(gè)節(jié)點(diǎn)。d類i p地址范圍在244.0.0.0到239.255.255.255之間。它分為兩類:永久地址和臨時(shí)地址。永久地址是為特殊用途而保留的。比如,244.0.0.0根本沒(méi)有使用(也不能使用),244.0.0.1代表子網(wǎng)內(nèi)的所有系統(tǒng)(主機(jī)),而244.0.0.2代表子網(wǎng)內(nèi)的所有路由器。在rfc 1700文件中,提供了所有保留地址的一個(gè)詳細(xì)清單。該文件是為特殊用途保留的所有資源的一個(gè)列表,大家可以找來(lái)作為參考。"internet分配數(shù)字專家組"(i a n a)負(fù)責(zé)著這個(gè)列表的維護(hù)。在表1中,我們總結(jié)了目前標(biāo)定為"保留"的一些地址。臨時(shí)組地址在使用前必須先創(chuàng)建,一個(gè)進(jìn)程可以要求其主機(jī)加入特定的組,它也能要求其主機(jī)脫離該組。當(dāng)主機(jī)上的最后一個(gè)進(jìn)程脫離某個(gè)組后,該組地址就不再在這臺(tái)主機(jī)中出現(xiàn)。每個(gè)主機(jī)都要記錄它的進(jìn)程當(dāng)前屬于哪個(gè)組。
表1 部分永久地址說(shuō)明
地 址 說(shuō) 明
地 址 | 說(shuō) 明 |
244.0.0.1 | 基本地址(保留) |
244.0.0.1 | 子網(wǎng)上的所有系統(tǒng) |
244.0.0.2 | 子網(wǎng)上的所有路由器 |
244.0.0.5 | 子網(wǎng)上所有ospf路由器 |
244.0.0.6 | 子網(wǎng)上所有指定的ospf路由器 |
244.0.0.9 | rip第2版本組地址 |
244.0.1.1 | 網(wǎng)絡(luò)時(shí)間協(xié)議 |
244.0.1.24 | wins服務(wù)器組地址 |
3、 多播路由器
多播由特殊的多播路由器來(lái)實(shí)現(xiàn),多播路由器同時(shí)也可以是普通路由器。各個(gè)多播路由器每分鐘發(fā)送一個(gè)硬件多播信息給子網(wǎng)上的主機(jī)(目的地址為244.0.0.1),要求它們報(bào)告其進(jìn)程當(dāng)前所屬的是哪一組,各主機(jī)將它感興趣的d類地址返回。這些詢問(wèn)和響應(yīng)分組使用igmp(internet group management protocol),它大致類似于icmp。它只有兩種分組:詢問(wèn)和響應(yīng),都有一個(gè)簡(jiǎn)單的固定格式,其中有效載荷字段的第一個(gè)字段是一些控制信息,第二字段是一個(gè)d類地址,在rfc1112中有詳細(xì)
熱門(mén)點(diǎn)擊
- CPLD開(kāi)發(fā)板和FPGA開(kāi)發(fā)板的區(qū)別
- 基于FPGA和AD1836的I2S接口設(shè)計(jì)
- vc中如何使用設(shè)備描述表
- Visual C++中調(diào)用DLL實(shí)現(xiàn)數(shù)據(jù)加密
- Visual C++6.0 API函數(shù)操作技
- VC++中進(jìn)程與多進(jìn)程管理的方法
- JavaCard CPU的設(shè)計(jì)與FPGA實(shí)現(xiàn)
- 如何用C語(yǔ)言開(kāi)發(fā)DSP嵌入式系統(tǒng)
- C和C++ 字符串字面量的比較
- Xilinx針對(duì)Virtex-5 FXT F
推薦技術(shù)資料
- 聲道前級(jí)設(shè)計(jì)特點(diǎn)
- 與通常的Hi-Fi前級(jí)不同,EP9307-CRZ這臺(tái)分... [詳細(xì)]
- 首款新結(jié)構(gòu)硅基外腔混合集成光源芯片
- 全大核架構(gòu) X930 超大核的
- 計(jì)算子系統(tǒng)(Compute Sub Syst
- Neoverse CSS V3 架構(gòu)R
- Arm Neoverse CP
- Dimensity 9400芯
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究