第3章 UDP應(yīng)用編程_第1頁(yè)
第3章 UDP應(yīng)用編程_第2頁(yè)
第3章 UDP應(yīng)用編程_第3頁(yè)
第3章 UDP應(yīng)用編程_第4頁(yè)
第3章 UDP應(yīng)用編程_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1第第3章章 UDP應(yīng)用編程應(yīng)用編程3.1 UDP協(xié)議基礎(chǔ)知識(shí)協(xié)議基礎(chǔ)知識(shí) 3.2 UDP應(yīng)用編程技術(shù)應(yīng)用編程技術(shù)3.3 使用使用UDP協(xié)議進(jìn)行廣播和組播協(xié)議進(jìn)行廣播和組播 23.1 UDP協(xié)議基礎(chǔ)知識(shí)協(xié)議基礎(chǔ)知識(shí) UDP協(xié)議的特點(diǎn)協(xié)議的特點(diǎn) UDP是一個(gè)簡(jiǎn)單的、面向數(shù)據(jù)報(bào)的無(wú)連接協(xié)議,是一個(gè)簡(jiǎn)單的、面向數(shù)據(jù)報(bào)的無(wú)連接協(xié)議,提供了快速但不一定可靠的傳輸服務(wù)。提供了快速但不一定可靠的傳輸服務(wù)。 UDP與與TCP的比較的比較 優(yōu)點(diǎn)優(yōu)點(diǎn) 無(wú)連接(速度快)、可用于廣播(組播)、消耗網(wǎng)絡(luò)無(wú)連接(速度快)、可用于廣播(組播)、消耗網(wǎng)絡(luò)帶寬小、有消息邊界帶寬小、有消息邊界 缺點(diǎn)缺點(diǎn) 不可靠、安全性差、不保證

2、報(bào)文順序交付不可靠、安全性差、不保證報(bào)文順序交付3編寫編寫UDP應(yīng)用程序時(shí),有兩種技術(shù):應(yīng)用程序時(shí),有兩種技術(shù):直接使用直接使用Socket類類使用使用UdpClient類類 UdpClient類對(duì)基礎(chǔ)類對(duì)基礎(chǔ)Socket進(jìn)行了封裝、發(fā)送和接進(jìn)行了封裝、發(fā)送和接收數(shù)據(jù)時(shí)不必考慮底層套接字收發(fā)時(shí)必須處理的一些收數(shù)據(jù)時(shí)不必考慮底層套接字收發(fā)時(shí)必須處理的一些細(xì)節(jié)問題,從而簡(jiǎn)化了細(xì)節(jié)問題,從而簡(jiǎn)化了UDP應(yīng)用編程的難度,提高了應(yīng)用編程的難度,提高了編程效率編程效率 。3.2 UDP應(yīng)用編程技術(shù)應(yīng)用編程技術(shù)4使用使用Socket編程步驟編程步驟5創(chuàng)建基于創(chuàng)建基于UDP協(xié)議的協(xié)議的SocketSocket

3、 udpClient = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);綁定本地端點(diǎn)綁定本地端點(diǎn):目的是告訴目的是告訴socket對(duì)象在指定的端點(diǎn)上接對(duì)象在指定的端點(diǎn)上接收數(shù)據(jù)收數(shù)據(jù) IPEndPoint point = new IPEndPoint(localIp, port); udpClient.Bind(point);(3)接收數(shù)據(jù)接收數(shù)據(jù) EndPoint remote =(EndPoint)new IPEndPoint(IPAddress.Any,0); int count =

4、udpSocket.ReceiveFrom(receiveByte, ref remotePoint);基于基于UDP協(xié)議的協(xié)議的Socket編程步驟編程步驟6創(chuàng)建基于創(chuàng)建基于UDP協(xié)議的協(xié)議的Socket(4)發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù) 可以另外創(chuàng)建一個(gè)新的可以另外創(chuàng)建一個(gè)新的socket,然后發(fā)送數(shù)據(jù)然后發(fā)送數(shù)據(jù) Socket tempSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);IPEndPoint remote = new IPEndPoint(remoteIP, 8000)

5、; tempSocket.SendTo(sendBytes, remote);(5)關(guān)閉關(guān)閉socket udpSocket.Close();基于基于UDP協(xié)議的協(xié)議的Socket編程步驟編程步驟7創(chuàng)建基于創(chuàng)建基于UDP協(xié)議的協(xié)議的SocketSocket udpClient = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);綁定本地端點(diǎn)綁定本地端點(diǎn):目的是告訴目的是告訴socket對(duì)象在指定的端點(diǎn)上接對(duì)象在指定的端點(diǎn)上接收數(shù)據(jù)收數(shù)據(jù) IPEndPoint point = new IPEnd

6、Point(localIp, port); udpClient.Bind(point);(3)接收數(shù)據(jù)接收數(shù)據(jù) EndPoint remote =(EndPoint)new IPEndPoint(IPAddress.Any,0); int count = udpSocket.ReceiveFrom(receiveByte, ref remotePoint);基于基于UDP協(xié)議的協(xié)議的Socket廣播編程步驟廣播編程步驟8 UDP協(xié)議的另外一個(gè)重要用途是可以通過(guò)廣播和組播實(shí)現(xiàn)一協(xié)議的另外一個(gè)重要用途是可以通過(guò)廣播和組播實(shí)現(xiàn)一對(duì)多的通信模式,即可以把數(shù)據(jù)發(fā)送到一組遠(yuǎn)程主機(jī)中。對(duì)多的通信模式,即可以

7、把數(shù)據(jù)發(fā)送到一組遠(yuǎn)程主機(jī)中。3.3 利用利用UDP協(xié)議廣播和組播協(xié)議廣播和組播 通過(guò)一對(duì)多的方式,可以將數(shù)據(jù)發(fā)送到多臺(tái)遠(yuǎn)程主機(jī)中,從通過(guò)一對(duì)多的方式,可以將數(shù)據(jù)發(fā)送到多臺(tái)遠(yuǎn)程主機(jī)中,從而完成發(fā)送網(wǎng)絡(luò)會(huì)議通知、廣告、網(wǎng)絡(luò)信息公告等群發(fā)功能。通而完成發(fā)送網(wǎng)絡(luò)會(huì)議通知、廣告、網(wǎng)絡(luò)信息公告等群發(fā)功能。通過(guò)過(guò)InternetInternet實(shí)現(xiàn)群發(fā)功能的形式有兩種,一種是利用廣播向子網(wǎng)實(shí)現(xiàn)群發(fā)功能的形式有兩種,一種是利用廣播向子網(wǎng)中的所有客戶發(fā)送消息,比如各類通知、單位公告、集體活動(dòng)日中的所有客戶發(fā)送消息,比如各類通知、單位公告、集體活動(dòng)日程安排等;另外一種是利用組播向程安排等;另外一種是利用組播向In

8、ternetInternet網(wǎng)上不同的子網(wǎng)發(fā)送網(wǎng)上不同的子網(wǎng)發(fā)送消息,比如集團(tuán)向其所屬的公司或用戶子網(wǎng)發(fā)布信息公告等。消息,比如集團(tuán)向其所屬的公司或用戶子網(wǎng)發(fā)布信息公告等。3.3.1 3.3.1 通過(guò)通過(guò)InternetInternet實(shí)現(xiàn)群發(fā)功能實(shí)現(xiàn)群發(fā)功能9利用廣播實(shí)現(xiàn)群發(fā)功能利用廣播實(shí)現(xiàn)群發(fā)功能 所謂廣播,就是指同時(shí)向子網(wǎng)中的多臺(tái)計(jì)算機(jī)發(fā)所謂廣播,就是指同時(shí)向子網(wǎng)中的多臺(tái)計(jì)算機(jī)發(fā)送消息,并且所有子網(wǎng)中的計(jì)算機(jī)都可以接收到發(fā)送送消息,并且所有子網(wǎng)中的計(jì)算機(jī)都可以接收到發(fā)送方發(fā)來(lái)的消息。每個(gè)廣播消息包含一個(gè)特殊的方發(fā)來(lái)的消息。每個(gè)廣播消息包含一個(gè)特殊的IP地址。地址。廣播消息地址分為兩種類型

9、:本地廣播和全球廣播。廣播消息地址分為兩種類型:本地廣播和全球廣播。 通過(guò)本地廣播向子網(wǎng)中的所有計(jì)算機(jī)發(fā)送廣播消通過(guò)本地廣播向子網(wǎng)中的所有計(jì)算機(jī)發(fā)送廣播消息時(shí),其他網(wǎng)絡(luò)不會(huì)受到本地廣播的影響。在前面的息時(shí),其他網(wǎng)絡(luò)不會(huì)受到本地廣播的影響。在前面的學(xué)習(xí)中,我們已經(jīng)知道了學(xué)習(xí)中,我們已經(jīng)知道了IP地址分為兩部分,網(wǎng)絡(luò)地地址分為兩部分,網(wǎng)絡(luò)地址和主機(jī)地址,標(biāo)準(zhǔn)網(wǎng)絡(luò)地址部分組成了本地網(wǎng)絡(luò)地址和主機(jī)地址,標(biāo)準(zhǔn)網(wǎng)絡(luò)地址部分組成了本地網(wǎng)絡(luò)地址的第一部分,字節(jié)地址中全部為址的第一部分,字節(jié)地址中全部為1的部分用于主機(jī)地的部分用于主機(jī)地址部分(即十進(jìn)制的址部分(即十進(jìn)制的255)。)。3.3.1 3.3.1 通

10、過(guò)通過(guò)InternetInternet實(shí)現(xiàn)群發(fā)功能(續(xù))實(shí)現(xiàn)群發(fā)功能(續(xù))10利用組播實(shí)現(xiàn)群發(fā)功能利用組播實(shí)現(xiàn)群發(fā)功能 廣播的通信模式雖然能夠?qū)崿F(xiàn)一對(duì)多的通信需廣播的通信模式雖然能夠?qū)崿F(xiàn)一對(duì)多的通信需要,但是,由于廣播是向子網(wǎng)中的所有計(jì)算機(jī)用戶發(fā)要,但是,由于廣播是向子網(wǎng)中的所有計(jì)算機(jī)用戶發(fā)送消息,沒有目的性,不但增加了網(wǎng)絡(luò)傳輸負(fù)擔(dān),而送消息,沒有目的性,不但增加了網(wǎng)絡(luò)傳輸負(fù)擔(dān),而且資源消耗較高。組播的出現(xiàn),較好地解決了這個(gè)問且資源消耗較高。組播的出現(xiàn),較好地解決了這個(gè)問題。組播也叫多路廣播。所謂組播是將消息從一臺(tái)計(jì)題。組播也叫多路廣播。所謂組播是將消息從一臺(tái)計(jì)算機(jī)發(fā)送到本網(wǎng)或全網(wǎng)內(nèi)選擇的計(jì)算

11、機(jī)子集上,即發(fā)算機(jī)發(fā)送到本網(wǎng)或全網(wǎng)內(nèi)選擇的計(jì)算機(jī)子集上,即發(fā)送到那些加入指定組播組的計(jì)算機(jī)上。組播組是開放送到那些加入指定組播組的計(jì)算機(jī)上。組播組是開放的,每臺(tái)計(jì)算機(jī)都可以通過(guò)程序隨時(shí)加入到組播組中,的,每臺(tái)計(jì)算機(jī)都可以通過(guò)程序隨時(shí)加入到組播組中,也可以隨時(shí)離開。也可以隨時(shí)離開。3.3.1 3.3.1 通過(guò)通過(guò)InternetInternet實(shí)現(xiàn)群發(fā)功能(續(xù))實(shí)現(xiàn)群發(fā)功能(續(xù))11 組播組是分享一個(gè)組播地址的一組設(shè)備。與組播組是分享一個(gè)組播地址的一組設(shè)備。與IP廣播類似,廣播類似,IP組播使用特殊的組播使用特殊的IP地址范圍來(lái)表示不地址范圍來(lái)表示不同的組播組。組播地址是范圍在同的組播組。組播地

12、址是范圍在到到55的的D類類IP地址。任何發(fā)送到組播地地址。任何發(fā)送到組播地址的消息都會(huì)被發(fā)送到組內(nèi)的所有成員設(shè)備上。址的消息都會(huì)被發(fā)送到組內(nèi)的所有成員設(shè)備上。組可以是永久的,也可以是臨時(shí)的。大多數(shù)組播組可以是永久的,也可以是臨時(shí)的。大多數(shù)組播組是臨時(shí)的,僅在有成員的時(shí)候才存在。用戶創(chuàng)組是臨時(shí)的,僅在有成員的時(shí)候才存在。用戶創(chuàng)建一個(gè)新的組播組時(shí)只需從地址范圍內(nèi)選出一個(gè)建一個(gè)新的組播組時(shí)只需從地址范圍內(nèi)選出一個(gè)地址,然后為這個(gè)地址構(gòu)造一個(gè)對(duì)象,就可以開地址,然后為這個(gè)地址構(gòu)造一個(gè)對(duì)象,就可以開始發(fā)送消息了。始發(fā)送消息了。12創(chuàng)建基于創(chuàng)建基于UDP協(xié)議的

13、協(xié)議的Socket(4)發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù) 可以另外創(chuàng)建一個(gè)新的可以另外創(chuàng)建一個(gè)新的socket,然后發(fā)送數(shù)據(jù)然后發(fā)送數(shù)據(jù) Socket tempSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);IPEndPoint remote = new IPEndPoint(remoteIP, 8000);tempSocket.EnableBroadcast = true;/開啟廣播功能開啟廣播功能 tempSocket.SendTo(sendBytes, remote);(5)關(guān)閉關(guān)閉s

14、ocket udpSocket.Close();基于基于UDP協(xié)議的協(xié)議的Socket廣播編程步驟廣播編程步驟13UdpClient類的構(gòu)造函數(shù)類的構(gòu)造函數(shù) 1) UdpClient() 創(chuàng)建一個(gè)新的創(chuàng)建一個(gè)新的UdpClient對(duì)象,并自動(dòng)分配合適的對(duì)象,并自動(dòng)分配合適的本地本地IPv4地址和端口號(hào)。例如:地址和端口號(hào)。例如: UdpClient udpClient = new UdpClient(); /指定默認(rèn)遠(yuǎn)程主機(jī)和端口號(hào)指定默認(rèn)遠(yuǎn)程主機(jī)和端口號(hào) udpClient.Connect(, 51666); Byte sendBytes = System.Text.Encoding.Uni

15、code.GetBytes(你好你好!); /發(fā)送給默認(rèn)遠(yuǎn)程主機(jī)發(fā)送給默認(rèn)遠(yuǎn)程主機(jī) udpClient.Send(sendBytes, sendBytes.Length); 3.2.1 UdpClient類類14 2) UdpClient(int port) 創(chuàng)建一個(gè)與指定的端口綁定的新的創(chuàng)建一個(gè)與指定的端口綁定的新的UdpClient實(shí)例,并自實(shí)例,并自動(dòng)動(dòng)分配合適的本地分配合適的本地IPv4地址。例如:地址。例如: UdpClient udpClient = new UdpClient(51666); 3) UdpClient(IPEndPoint localEp) 創(chuàng)建一個(gè)新的創(chuàng)建一個(gè)新

16、的UdpClient實(shí)例,該實(shí)例與包含本地實(shí)例,該實(shí)例與包含本地IP地址地址和和端口號(hào)的端口號(hào)的IPEndPoint實(shí)例綁定。例如:實(shí)例綁定。例如: IPAddress address = IPAddress.Parse(); IPEndPoint iep = new IPEndPoint(address, 51666); UdpClient udpClient =new UdpClient(iep);15 4) UdpClient(string remoteHost,int port) 創(chuàng)建一個(gè)新的創(chuàng)建一個(gè)新的UdpClient實(shí)例,自動(dòng)分配合適的實(shí)例,自動(dòng)分配合適的本地本

17、地IP地址和端口號(hào),并將它與指定的遠(yuǎn)程主機(jī)和地址和端口號(hào),并將它與指定的遠(yuǎn)程主機(jī)和端口號(hào)聯(lián)合。例如:端口號(hào)聯(lián)合。例如: UdpClient udpClient =new UdpClient(,8080); 使用這種構(gòu)造函數(shù),一般不必再調(diào)用使用這種構(gòu)造函數(shù),一般不必再調(diào)用Connect方方法。法。16發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù) Send方法使用哪種方式取決于以下兩點(diǎn):方法使用哪種方式取決于以下兩點(diǎn):一是一是UdpClient是如何連接到遠(yuǎn)程端口的,是如何連接到遠(yuǎn)程端口的, 二是二是UdpClient實(shí)例是如何創(chuàng)建的。實(shí)例是如何創(chuàng)建的。3.2.2 接收和發(fā)送數(shù)據(jù)的方法接收和發(fā)送數(shù)據(jù)的方法17 1) Send

18、(byte data, int length, IPEndPoint iep) 這種重載形式用于知道了遠(yuǎn)程主機(jī)這種重載形式用于知道了遠(yuǎn)程主機(jī)IP地址和端地址和端口的情況下,它有三個(gè)參數(shù):數(shù)據(jù)、數(shù)據(jù)長(zhǎng)度、口的情況下,它有三個(gè)參數(shù):數(shù)據(jù)、數(shù)據(jù)長(zhǎng)度、遠(yuǎn)程遠(yuǎn)程IPEndPoint對(duì)象。對(duì)象。 2) Send(byte data, int length, string remoteHostName, int port) 這種重載形式用于知道了遠(yuǎn)程主機(jī)名和端口號(hào)這種重載形式用于知道了遠(yuǎn)程主機(jī)名和端口號(hào)的情況下,利用的情況下,利用Send方法直接把方法直接把UDP數(shù)據(jù)報(bào)發(fā)送數(shù)據(jù)報(bào)發(fā)送到遠(yuǎn)程主機(jī)。到遠(yuǎn)程主機(jī)。

19、 3) Send(byte data, int length) 這種重載形式假定這種重載形式假定UDP客戶端已經(jīng)通過(guò)客戶端已經(jīng)通過(guò)Connect方法指定了默認(rèn)的遠(yuǎn)程主機(jī),因此,只要用方法指定了默認(rèn)的遠(yuǎn)程主機(jī),因此,只要用Send方法指定發(fā)送的數(shù)據(jù)和數(shù)據(jù)長(zhǎng)度即可。方法指定發(fā)送的數(shù)據(jù)和數(shù)據(jù)長(zhǎng)度即可。 18接收數(shù)據(jù)接收數(shù)據(jù) UdpClient對(duì)象的對(duì)象的Receive方法能夠在指定的本地方法能夠在指定的本地IP地址和端口上接收數(shù)據(jù),該方法帶一個(gè)引用類型的地址和端口上接收數(shù)據(jù),該方法帶一個(gè)引用類型的IPEndPoint實(shí)例,并將接收到的數(shù)據(jù)作為實(shí)例,并將接收到的數(shù)據(jù)作為byte數(shù)組返數(shù)組返回。例如:回

20、。例如: IPEndPoint remoteIpEndPoint = new IPEndPoint(IPAddress.Any, 51666); UdpClient udpClient = new UdpClient(remoteIpEndPoint); IPEndPoint iep=new IPEndPoint(IPAddress.Any,0); Byte receiveBytes = udpClient.Receive(ref iep); string receiveData = System.Text.Encoding.Unicode.GetString(receiveBytes); C

21、onsole.WriteLine(接收到信息:接收到信息:+receiveData); 3.2.2 接收和發(fā)送數(shù)據(jù)的方法(續(xù))接收和發(fā)送數(shù)據(jù)的方法(續(xù))19 使用使用UdpClientUdpClient對(duì)象的對(duì)象的ReceiveReceive方法的優(yōu)點(diǎn)是:當(dāng)本方法的優(yōu)點(diǎn)是:當(dāng)本機(jī)接收的數(shù)據(jù)報(bào)容量超過(guò)分配給它的緩沖區(qū)大小時(shí),該機(jī)接收的數(shù)據(jù)報(bào)容量超過(guò)分配給它的緩沖區(qū)大小時(shí),該方法能夠自動(dòng)調(diào)整緩沖區(qū)大小。而使用方法能夠自動(dòng)調(diào)整緩沖區(qū)大小。而使用SocketSocket對(duì)象遇到對(duì)象遇到這種情況時(shí),將會(huì)產(chǎn)生這種情況時(shí),將會(huì)產(chǎn)生SocketExceptionSocketException異常。異常?!纠?/p>

22、3-13-1】UdpClientUdpClient使用示例使用示例UDPUDP網(wǎng)絡(luò)聊天工具網(wǎng)絡(luò)聊天工具 3.2.2 接收和發(fā)送數(shù)據(jù)的方法(續(xù))接收和發(fā)送數(shù)據(jù)的方法(續(xù))20 UDP協(xié)議的另外一個(gè)重要用途是可以通過(guò)廣播和組播實(shí)現(xiàn)一協(xié)議的另外一個(gè)重要用途是可以通過(guò)廣播和組播實(shí)現(xiàn)一對(duì)多的通信模式,即可以把數(shù)據(jù)發(fā)送到一組遠(yuǎn)程主機(jī)中。對(duì)多的通信模式,即可以把數(shù)據(jù)發(fā)送到一組遠(yuǎn)程主機(jī)中。3.3 利用利用UDP協(xié)議廣播和組播協(xié)議廣播和組播 通過(guò)一對(duì)多的方式,可以將數(shù)據(jù)發(fā)送到多臺(tái)遠(yuǎn)程主機(jī)中,從通過(guò)一對(duì)多的方式,可以將數(shù)據(jù)發(fā)送到多臺(tái)遠(yuǎn)程主機(jī)中,從而完成發(fā)送網(wǎng)絡(luò)會(huì)議通知、廣告、網(wǎng)絡(luò)信息公告等群發(fā)功能。通而完成發(fā)送網(wǎng)

23、絡(luò)會(huì)議通知、廣告、網(wǎng)絡(luò)信息公告等群發(fā)功能。通過(guò)過(guò)InternetInternet實(shí)現(xiàn)群發(fā)功能的形式有兩種,一種是利用廣播向子網(wǎng)實(shí)現(xiàn)群發(fā)功能的形式有兩種,一種是利用廣播向子網(wǎng)中的所有客戶發(fā)送消息,比如各類通知、單位公告、集體活動(dòng)日中的所有客戶發(fā)送消息,比如各類通知、單位公告、集體活動(dòng)日程安排等;另外一種是利用組播向程安排等;另外一種是利用組播向InternetInternet網(wǎng)上不同的子網(wǎng)發(fā)送網(wǎng)上不同的子網(wǎng)發(fā)送消息,比如集團(tuán)向其所屬的公司或用戶子網(wǎng)發(fā)布信息公告等。消息,比如集團(tuán)向其所屬的公司或用戶子網(wǎng)發(fā)布信息公告等。3.3.1 3.3.1 通過(guò)通過(guò)InternetInternet實(shí)現(xiàn)群發(fā)功能實(shí)現(xiàn)

24、群發(fā)功能21利用廣播實(shí)現(xiàn)群發(fā)功能利用廣播實(shí)現(xiàn)群發(fā)功能 所謂廣播,就是指同時(shí)向子網(wǎng)中的多臺(tái)計(jì)算機(jī)發(fā)所謂廣播,就是指同時(shí)向子網(wǎng)中的多臺(tái)計(jì)算機(jī)發(fā)送消息,并且所有子網(wǎng)中的計(jì)算機(jī)都可以接收到發(fā)送送消息,并且所有子網(wǎng)中的計(jì)算機(jī)都可以接收到發(fā)送方發(fā)來(lái)的消息。每個(gè)廣播消息包含一個(gè)特殊的方發(fā)來(lái)的消息。每個(gè)廣播消息包含一個(gè)特殊的IP地址。地址。廣播消息地址分為兩種類型:本地廣播和全球廣播。廣播消息地址分為兩種類型:本地廣播和全球廣播。 通過(guò)本地廣播向子網(wǎng)中的所有計(jì)算機(jī)發(fā)送廣播消通過(guò)本地廣播向子網(wǎng)中的所有計(jì)算機(jī)發(fā)送廣播消息時(shí),其他網(wǎng)絡(luò)不會(huì)受到本地廣播的影響。在前面的息時(shí),其他網(wǎng)絡(luò)不會(huì)受到本地廣播的影響。在前面的學(xué)習(xí)

25、中,我們已經(jīng)知道了學(xué)習(xí)中,我們已經(jīng)知道了IP地址分為兩部分,網(wǎng)絡(luò)地地址分為兩部分,網(wǎng)絡(luò)地址和主機(jī)地址,標(biāo)準(zhǔn)網(wǎng)絡(luò)地址部分組成了本地網(wǎng)絡(luò)地址和主機(jī)地址,標(biāo)準(zhǔn)網(wǎng)絡(luò)地址部分組成了本地網(wǎng)絡(luò)地址的第一部分,字節(jié)地址中全部為址的第一部分,字節(jié)地址中全部為1的部分用于主機(jī)地的部分用于主機(jī)地址部分(即十進(jìn)制的址部分(即十進(jìn)制的255)。)。3.3.1 3.3.1 通過(guò)通過(guò)InternetInternet實(shí)現(xiàn)群發(fā)功能(續(xù))實(shí)現(xiàn)群發(fā)功能(續(xù))22 【例例3-2】編寫一個(gè)編寫一個(gè)Windows應(yīng)用程序,向子網(wǎng)發(fā)應(yīng)用程序,向子網(wǎng)發(fā)送廣播信息,同時(shí)接收子網(wǎng)中的任意主機(jī)發(fā)送的送廣播信息,同時(shí)接收子網(wǎng)中的任意主機(jī)發(fā)送的廣播信

26、息。廣播信息。23利用組播實(shí)現(xiàn)群發(fā)功能利用組播實(shí)現(xiàn)群發(fā)功能 廣播的通信模式雖然能夠?qū)崿F(xiàn)一對(duì)多的通信需廣播的通信模式雖然能夠?qū)崿F(xiàn)一對(duì)多的通信需要,但是,由于廣播是向子網(wǎng)中的所有計(jì)算機(jī)用戶發(fā)要,但是,由于廣播是向子網(wǎng)中的所有計(jì)算機(jī)用戶發(fā)送消息,沒有目的性,不但增加了網(wǎng)絡(luò)傳輸負(fù)擔(dān),而送消息,沒有目的性,不但增加了網(wǎng)絡(luò)傳輸負(fù)擔(dān),而且資源消耗較高。組播的出現(xiàn),較好地解決了這個(gè)問且資源消耗較高。組播的出現(xiàn),較好地解決了這個(gè)問題。組播也叫多路廣播。所謂組播是將消息從一臺(tái)計(jì)題。組播也叫多路廣播。所謂組播是將消息從一臺(tái)計(jì)算機(jī)發(fā)送到本網(wǎng)或全網(wǎng)內(nèi)選擇的計(jì)算機(jī)子集上,即發(fā)算機(jī)發(fā)送到本網(wǎng)或全網(wǎng)內(nèi)選擇的計(jì)算機(jī)子集上,即發(fā)

27、送到那些加入指定組播組的計(jì)算機(jī)上。組播組是開放送到那些加入指定組播組的計(jì)算機(jī)上。組播組是開放的,每臺(tái)計(jì)算機(jī)都可以通過(guò)程序隨時(shí)加入到組播組中,的,每臺(tái)計(jì)算機(jī)都可以通過(guò)程序隨時(shí)加入到組播組中,也可以隨時(shí)離開。也可以隨時(shí)離開。3.3.1 3.3.1 通過(guò)通過(guò)InternetInternet實(shí)現(xiàn)群發(fā)功能(續(xù))實(shí)現(xiàn)群發(fā)功能(續(xù))24 組播組是分享一個(gè)組播地址的一組設(shè)備。與組播組是分享一個(gè)組播地址的一組設(shè)備。與IP廣播類似,廣播類似,IP組播使用特殊的組播使用特殊的IP地址范圍來(lái)表示不地址范圍來(lái)表示不同的組播組。組播地址是范圍在同的組播組。組播地址是范圍在到到5

28、5的的D類類IP地址。任何發(fā)送到組播地地址。任何發(fā)送到組播地址的消息都會(huì)被發(fā)送到組內(nèi)的所有成員設(shè)備上。址的消息都會(huì)被發(fā)送到組內(nèi)的所有成員設(shè)備上。組可以是永久的,也可以是臨時(shí)的。大多數(shù)組播組可以是永久的,也可以是臨時(shí)的。大多數(shù)組播組是臨時(shí)的,僅在有成員的時(shí)候才存在。用戶創(chuàng)組是臨時(shí)的,僅在有成員的時(shí)候才存在。用戶創(chuàng)建一個(gè)新的組播組時(shí)只需從地址范圍內(nèi)選出一個(gè)建一個(gè)新的組播組時(shí)只需從地址范圍內(nèi)選出一個(gè)地址,然后為這個(gè)地址構(gòu)造一個(gè)對(duì)象,就可以開地址,然后為這個(gè)地址構(gòu)造一個(gè)對(duì)象,就可以開始發(fā)送消息了。始發(fā)送消息了。25 使用組播時(shí),應(yīng)注意的是使用組播時(shí),應(yīng)注意的是TTL(生存周期生存周期Time To Live)值的設(shè)置。值的設(shè)置。TTL值是允許路由器轉(zhuǎn)發(fā)的最大數(shù)目,值是允許路由器轉(zhuǎn)發(fā)的最大數(shù)目,當(dāng)達(dá)到這個(gè)最大值時(shí),數(shù)據(jù)包就會(huì)被丟棄。如果使用當(dāng)達(dá)到這個(gè)最大值時(shí),數(shù)據(jù)包就會(huì)被丟棄。如果使用默認(rèn)值默認(rèn)值(默認(rèn)值為默認(rèn)值為1),則只能在子網(wǎng)中發(fā)送??梢酝ㄟ^(guò),則只能在子網(wǎng)中發(fā)送??梢酝ㄟ^(guò)UdpClient對(duì)象的對(duì)象的Ttl屬性直接設(shè)置屬性直接設(shè)置TTL值,例如:值,例如: UdpClient myUdpClient = new UdpClient(); myUdpCli

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論