![Java程序設(shè)計與應(yīng)用 課件【ch13】網(wǎng)絡(luò)編程_第1頁](http://file4.renrendoc.com/view/cd75a89f182aab61cf97236777bc3107/cd75a89f182aab61cf97236777bc31071.gif)
![Java程序設(shè)計與應(yīng)用 課件【ch13】網(wǎng)絡(luò)編程_第2頁](http://file4.renrendoc.com/view/cd75a89f182aab61cf97236777bc3107/cd75a89f182aab61cf97236777bc31072.gif)
![Java程序設(shè)計與應(yīng)用 課件【ch13】網(wǎng)絡(luò)編程_第3頁](http://file4.renrendoc.com/view/cd75a89f182aab61cf97236777bc3107/cd75a89f182aab61cf97236777bc31073.gif)
![Java程序設(shè)計與應(yīng)用 課件【ch13】網(wǎng)絡(luò)編程_第4頁](http://file4.renrendoc.com/view/cd75a89f182aab61cf97236777bc3107/cd75a89f182aab61cf97236777bc31074.gif)
![Java程序設(shè)計與應(yīng)用 課件【ch13】網(wǎng)絡(luò)編程_第5頁](http://file4.renrendoc.com/view/cd75a89f182aab61cf97236777bc3107/cd75a89f182aab61cf97236777bc31075.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
網(wǎng)絡(luò)編程第十三章Java程序設(shè)計與應(yīng)用新工科建設(shè)之路·計算機(jī)類規(guī)劃教材01URLPARTONEURLURL(UniformResourceLocator)中文名為統(tǒng)一資源定位符,用來表示互聯(lián)網(wǎng)上的資源的地址。URL地址的組成如下:Protocol(協(xié)議名):指明獲取資源所使用的傳輸協(xié)議,如HTTP、FTP、Gopher、File等。URLport(端口號):可選,表示連接的端口號,如默認(rèn)將連接到協(xié)議默認(rèn)的端口。resourceName(資源名):表示資源的完整地址,包括主機(jī)名、端口號、文件名或文件內(nèi)部的一個引用。anchor(標(biāo)記):可選,指文件內(nèi)的有特定標(biāo)記的位置。URLURL類屬性獲取的常用方法如表13-1所示,使用Java中的URL類需要引入包。URLURL的構(gòu)造方法為了表示URL,中實(shí)現(xiàn)了URL類,可通過下面的構(gòu)造方法來初始化一個URL對象。(1)publicURL(Stringurl)表示通過一個表示URL地址的字符串可以構(gòu)造一個URL對象,如:URLURL的構(gòu)造方法(2)publicURL(URLcontext,Stringspec)表示通過基URL構(gòu)造一個URL對象,如:(3)publicURL(Stringprotocol,Stringhost,Stringfile)表示通過協(xié)議,域名及文件名構(gòu)造一個URL對象,如:URLURL的構(gòu)造方法(4)publicURL(Stringprotocol,Stringhost,intport,Stringfile)表示通過協(xié)議,域名,端口號及文件名構(gòu)造一個URL對象,如:注意:URL類的構(gòu)造方法都可能會拋出異常,因此生成URL對象時,必須要對這個異常進(jìn)行處理。URL獲取URL中的資源創(chuàng)建了一個URL對象后,便可通過它讀取指定的網(wǎng)絡(luò)資源,URL對象有兩種方法可以用來訪問網(wǎng)絡(luò)資源。(1)使用URL的openConnection()方法創(chuàng)建一個URLConnection類的對象,再通過URLConnection對象獲取相應(yīng)的輸入/輸出流。(2)利用URL類的openStream()方法。openStream()方法與指定的URL對象建立連接并返回InputStream類的對象。URL【例13-1】URL對象訪問網(wǎng)絡(luò)資源。URLURL02InetAddress類PARTTWOInetAddress類我們知道網(wǎng)絡(luò)中的計算機(jī)能夠進(jìn)行通信,需要為每臺計算機(jī)指定一個標(biāo)識號,通過接收數(shù)據(jù)的計算機(jī)或者發(fā)送數(shù)據(jù)的計算機(jī)。在TCP/IP協(xié)議中,這個標(biāo)識號就是IP地址,它可以唯一標(biāo)識一臺計算機(jī),是傳輸層協(xié)議TCP和UDP的基礎(chǔ)。Java在JDK中,提供了一個與IP地址相關(guān)的InetAddress類,InetAddress類是Java對IP地址的封裝,幾乎所有Java網(wǎng)絡(luò)相關(guān)的類都和它有關(guān)系InetAddress類該類用于封裝一個IP地址,并提供了一系列與IP地址相關(guān)的方法,如表13-2所示。03TCP網(wǎng)絡(luò)編程PARTTHREETCP網(wǎng)絡(luò)編程TCP協(xié)議是面向連接的通信協(xié)議,即在傳輸數(shù)據(jù)前先在發(fā)送端和接收端建立邏輯連接,然后再傳輸數(shù)據(jù),它提供了兩臺計算機(jī)之間可靠無差錯的數(shù)據(jù)傳輸。在TCP連接中必須要明確客戶端與服務(wù)器端,由客戶端向服務(wù)器端發(fā)出連接請求,每次連接的創(chuàng)建都需要經(jīng)過“三次握手”。TCP網(wǎng)絡(luò)編程第一次握手,客戶端向服務(wù)器端發(fā)出連接請求,等待服務(wù)器端確認(rèn)。第二次握手,服務(wù)器端向客戶端回送一個響應(yīng),通知客戶端收到了連接請求。第三次握手,客戶端再次向服務(wù)器端發(fā)送確認(rèn)信息,確認(rèn)連接。TCP通信是嚴(yán)格區(qū)分客戶端與服務(wù)器端的,在通信時,必須先由客戶端去連接服務(wù)器端才能實(shí)現(xiàn)通信,服務(wù)器端不可以主動連接客戶端,并且服務(wù)器端程序需要事先啟動,等待客戶端的連接。TCP網(wǎng)絡(luò)編程ServerSocket類在使用TCP協(xié)議編寫Java應(yīng)用程序時,首先需要創(chuàng)建服務(wù)器端程序。JDK的包中提供了一個ServerSocket類,該類有4種構(gòu)造方法,如表13-3所示。TCP網(wǎng)絡(luò)編程TCP網(wǎng)絡(luò)編程ServerSocket類常用的方法如表13-4所示。TCP網(wǎng)絡(luò)編程Socket類ServerSocket類可以實(shí)現(xiàn)服務(wù)端器程序,但只實(shí)現(xiàn)服務(wù)器端程序還不能完成通信。此時還需要一個客戶端程序與之交互,為此JDK提供了一個Socket類,用于實(shí)現(xiàn)TCP客戶端程序。TCP網(wǎng)絡(luò)編程Socket類的構(gòu)造方法如表13-5所示。TCP網(wǎng)絡(luò)編程Socket類的常用方法如表13-6所示。TCP網(wǎng)絡(luò)編程Socket類由例13-3和例13-4可知,基于Java的TCP編程的步驟如下:(1)服務(wù)器端創(chuàng)建ServerSocket對象,調(diào)用accept()方法返回Socket對象。(2)客戶端創(chuàng)建Socket對象,通過端口連接到服務(wù)器端。TCP網(wǎng)絡(luò)編程服務(wù)器端和客戶端的數(shù)據(jù)傳輸如圖13-3所示。TCP網(wǎng)絡(luò)編程多線程的TCP網(wǎng)絡(luò)編程當(dāng)服務(wù)器端在等待客戶端連接時,程序一直處于阻塞狀態(tài),直到由一個客戶端程序請求服務(wù)器端時才結(jié)束阻塞。這種方式不僅效率低,而且也不符合實(shí)際。服務(wù)器是面向多用戶的,它允許被多個應(yīng)用程序訪問,因此,服務(wù)器端程序應(yīng)該被設(shè)計成多線程程序,一個用戶請求開啟一個線程處理。04UDP編程PARTFOURUDP編程UDP是無連接通信協(xié)議,即在數(shù)據(jù)傳輸時,數(shù)據(jù)的發(fā)送端和接收端不建立邏輯連接。簡單來說,當(dāng)一臺計算機(jī)向另一臺計算機(jī)發(fā)送數(shù)據(jù)時,發(fā)送端不會確認(rèn)接收端是否存在,就會發(fā)出數(shù)據(jù),同樣接收端在收到數(shù)據(jù)時,也不會向發(fā)送端反饋是否收到數(shù)據(jù)。UDP編程由于使用UDP協(xié)議消耗資源小,通信效率高,所以通常都會用于音頻、視頻和普通數(shù)據(jù)的傳輸,如視頻會議使用UDP協(xié)議。因?yàn)檫@種情況即使偶爾丟失一兩個數(shù)據(jù)包,也不會對接收結(jié)果產(chǎn)生太大影響。但是在使用UDP協(xié)議傳送數(shù)據(jù)時,由于UDP的面向無連接性,不能保證數(shù)據(jù)的完整性,因此在傳輸重要數(shù)據(jù)時不建議使用UDP協(xié)議。UDP編程DatagramPacket類UDP是一種面向無連接的協(xié)議,因此,在通信時發(fā)送端和接收端不用建立連接。UDP通信的過程就像是貨運(yùn)公司在兩個碼頭間發(fā)送貨物一樣,在碼頭發(fā)送和接收貨物時都需要使用集裝箱來裝載貨物。UDP通信也是一樣的,發(fā)送和接收的數(shù)據(jù)也需要使用“集裝箱”進(jìn)行打包。UDP編程DatagramPacket類為此JDK在包中提供了DatagramPacket類用來表示“集裝箱”(數(shù)據(jù)報包),該“集裝箱”包含的信息從一臺機(jī)器傳輸?shù)搅硪慌_機(jī)器。從一臺機(jī)器發(fā)送到另一臺機(jī)器的多個“集裝箱”可能選擇不同的路由,也可能按不同的順序到達(dá)。DatagramPacket類的構(gòu)造方法如表13-7所示。UDP編程UDP編程JDK除了提供DatagramPacket類的構(gòu)造方法來構(gòu)造一個DatagramPacket實(shí)例,也提供了一些常用的方法,如表13-8所示。UDP編程DatagramSocket類DatagramSocket類用于表示發(fā)送和接收“集裝箱”(數(shù)據(jù)報包)的套接字。數(shù)據(jù)報包套接字是“集裝箱”投遞服務(wù)的發(fā)送或接收點(diǎn)。每個在數(shù)據(jù)報包套接字上發(fā)送或接收的包都是單獨(dú)編址和傳輸?shù)?。從一臺機(jī)器發(fā)送到另一臺機(jī)器的多個“集裝箱”可能選擇不同的路由,也可能按不同的順序到達(dá)。UDP編程DatagramSocket類的構(gòu)造方法如表13-9所示。UDP編程JDK除了提供DatagramSocket類的構(gòu)造方法來構(gòu)造一個DatagramSocket實(shí)例,也提供了一些常用的方法,用來發(fā)送和接收數(shù)據(jù),如表13-10所示。UDP編程UDP網(wǎng)絡(luò)編程前兩節(jié)介紹了在UDP網(wǎng)絡(luò)編程中使用的類,接下來介紹如何實(shí)現(xiàn)UDP編程。在Java中使用UDP協(xié)議發(fā)送數(shù)據(jù)的基本步驟如下:(1)使用DatagramPacket()創(chuàng)建要發(fā)送的數(shù)據(jù)包。(2)使用DatagramSocket()創(chuàng)建一個數(shù)據(jù)包套接字。(3)使用DatagramSocket類的send()方法發(fā)送數(shù)據(jù)包。UDP編程UDP網(wǎng)絡(luò)編程接收UDP數(shù)據(jù)包的步驟如下:(1)使用DatagramPacket()創(chuàng)建字節(jié)數(shù)組來接收數(shù)據(jù)包。(2)使用DatagramSocket()創(chuàng)建數(shù)據(jù)包套接字,并將其綁定到指定的端口。(3)使用DatagramPacket()類的receive()方法接收UDP包。編寫程序時,依然需要服務(wù)器端程序和客戶端程序。05廣播數(shù)據(jù)報PARTFIVE廣播數(shù)據(jù)報DatagramSocket類只允許數(shù)據(jù)報包發(fā)送給指定的目標(biāo)地址,如果需要將數(shù)據(jù)報包發(fā)送給多個目標(biāo)地址,則要用到JDK提供的MulticastSocket類,MulticastSocket類是DatagramSocket的子類,它增加了加入和離開組播組的功能。組播組通過一個D類IP地址和一個標(biāo)準(zhǔn)UDP端口號的組合來定義。D類IP地址的范圍是~55,是保留地址,不應(yīng)使用。廣播數(shù)據(jù)報MulticastSocket類的構(gòu)造方法如表13-11所示。廣播數(shù)據(jù)報創(chuàng)建一個MulticastSocket對象后,還需要將該MulticastSocket對象加入指定的多點(diǎn)組播地址。MulticastSocket對象使用joinGroup()方法來加入指定組;使用leaveGroup()方法脫離一個組。MulticastSocket類的常用方法如表13-12所示。廣播數(shù)據(jù)報06上機(jī)實(shí)驗(yàn)PARTSIX上機(jī)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國汽車空調(diào)鼓風(fēng)電機(jī)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國高速銅纜行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球虛擬首席信息安全官(VCISO)服務(wù)行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國充電保護(hù)裝置行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球矯形外科行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球機(jī)器人滾柱絲杠行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國機(jī)器人地板洗干一體機(jī)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國LLDPE纏繞膜行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國AKD中性施膠劑行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球數(shù)字創(chuàng)意展覽服務(wù)行業(yè)調(diào)研及趨勢分析報告
- 電力溝施工組織設(shè)計-電纜溝
- 《法律援助》課件
- 小兒肺炎治療與護(hù)理
- 《高處作業(yè)安全》課件
- 春節(jié)后收心安全培訓(xùn)
- 小學(xué)教師法制培訓(xùn)課件
- 電梯操作證及電梯維修人員資格(特種作業(yè))考試題及答案
- 市政綠化養(yǎng)護(hù)及市政設(shè)施養(yǎng)護(hù)服務(wù)方案(技術(shù)方案)
- SLT824-2024 水利工程建設(shè)項(xiàng)目文件收集與歸檔規(guī)范
- 鍋爐本體安裝單位工程驗(yàn)收表格
- 報價單(產(chǎn)品報價單)
評論
0/150
提交評論