版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑工程審計(jì)合同
- 2025版實(shí)習(xí)生實(shí)習(xí)期間實(shí)習(xí)單位培訓(xùn)責(zé)任協(xié)議3篇
- 寫字樓電梯管理協(xié)議
- 2025個(gè)人貨車租賃合同書
- 建筑工程:車庫(kù)雨棚施工合同范本
- 家政服務(wù)伸縮縫安裝施工協(xié)議
- 2025版勞動(dòng)合同補(bǔ)充協(xié)議范本匯編3篇
- 2024年教育培訓(xùn)機(jī)構(gòu)廣告合作合同范本3篇
- 自建房屋建筑設(shè)備租賃合同
- 證券投資聯(lián)合體投標(biāo)協(xié)議模板
- 信陽(yáng)市光山縣2023-2024學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)測(cè)試卷(含答案)
- 抽沙船施工方案
- 內(nèi)蒙古蘇尼特右旗銅鉛鋅礦選礦試驗(yàn)報(bào)告
- 諾如病毒檢測(cè)技術(shù)培訓(xùn)
- 物業(yè)工程維修作業(yè)安全操作指南
- 自考05627職業(yè)輔導(dǎo)個(gè)人筆記
- 昆山通海中學(xué)小升初考試試卷
- 成人高等教育行業(yè)營(yíng)銷方案
- 活動(dòng)義齒(設(shè)計(jì))課件
- SA8000-2014社會(huì)責(zé)任績(jī)效委員會(huì)SPT組織架構(gòu)、職責(zé)和定期檢討及評(píng)審會(huì)議記錄
- 部編版六年級(jí)語(yǔ)文上冊(cè)《認(rèn)識(shí)分號(hào)》教學(xué)課件
評(píng)論
0/150
提交評(píng)論