版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第 11 章 Java 網(wǎng)絡(luò)程序設(shè)計(jì)11.1 網(wǎng)絡(luò)程序設(shè)計(jì)概述11.2 有連接的Socket通信11.3 無連接的Socket通信11.4 URL通信第1頁,共42頁。11.1 網(wǎng)絡(luò)程序設(shè)計(jì)概述Internet上的通信協(xié)議是以TCP/IP協(xié)議簇為基礎(chǔ)的。TCP/IP協(xié)議簇通常分為4層:網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層,如圖11-1所示。 第2頁,共42頁。圖11-1 TCP/IP協(xié)議簇的4層模型第3頁,共42頁。 11.2 有連接的Socket通信有連接的Socket通信主要使用java包中的Socket類和ServerSocket類,Socket類的對象主要用于標(biāo)識一個(gè)通信Socket連接
2、的客戶端和服務(wù)器端,而ServerSocket類的對象主要用于監(jiān)聽客戶端的連接并建立通信Socket連接。 第4頁,共42頁。1. IP地址類InetAddressInetAddress類在java包中,用來定義一個(gè)IP地址。該類能夠完成解析IP地址、查詢主機(jī)名等功能。InetAddress類沒有public的構(gòu)造方法,一般需要通過調(diào)用該類的靜態(tài)方法返回具體的InetAddress對象。InetAddress的主要接口方法及其含義如表11-1所示。第5頁,共42頁。第6頁,共42頁。第7頁,共42頁。第8頁,共42頁。第9頁,共42頁。2. 有連接的通信模型在Java中,有連接的通信采用流式I
3、/O模型,通信模型見圖11-2??蛻舳薙ocket的典型構(gòu)造方法形如:Socket(InetAddress address,int port ,InetAddress localAddr,int localPort)或 Socket(String host,int port ,InetAddress localAddr,int localPort)第10頁,共42頁。圖11-2 有連接的客戶端/服務(wù)器通信模型第11頁,共42頁。其中,address為遠(yuǎn)端IP,port為遠(yuǎn)端端口號,host為遠(yuǎn)端主機(jī)名,可選的localAddr為本地IP地址,可選的localPort為與當(dāng)前Socket綁定的本
4、地端口號。Socket類的主要接口方法及其含義如表11-2所示。ServerSocket的構(gòu)造方法形如:ServerSocket(int port ,int backlog)第12頁,共42頁。第13頁,共42頁。3. 有連接的通信示例在例11-3中,TCPClient與TCP-Server進(jìn)行有連接的通信。在連接建立后,雙方各自獲得對方的IP地址字符串和端口號并在控制臺顯示。在獲得各自I/O流之后,TCPClient接受從鍵盤輸入的語句,并發(fā)送給TCPServer。TCPServer接收到消息后,判斷其是否為“quit”命令,如果不是,則將收到的消息顯示在控制臺。此后,TCPServer在收
5、到的消息之前加上字符串“Server reply:”之后,發(fā)送回TCPClient。TCPClient在接收到消息后在控制臺將消息打印出來。 第14頁,共42頁。第15頁,共42頁。第16頁,共42頁。第17頁,共42頁。第18頁,共42頁。4. Socket選項(xiàng)Socket類還有一些與Socket選項(xiàng)相關(guān)的接口方法,其中的一些主要方法及含義見表11-3。 第19頁,共42頁。第20頁,共42頁。11.3 無連接的Socket通信無連接的Socket通信主要使用java包中的DatagramSocket類,而被發(fā)送的數(shù)據(jù)報(bào)則是DatagramPacket類的對象。數(shù)據(jù)報(bào)是一種在網(wǎng)絡(luò)上獨(dú)立傳播的
6、包含兩端地址信息的消息。數(shù)據(jù)報(bào)無法保證消息的可靠到達(dá)和及時(shí)到達(dá),與面向連接的通信方式相比,服務(wù)質(zhì)量較差但開銷較小。對于不需要高質(zhì)量通信服務(wù)的應(yīng)用程序來說,使用無連接的數(shù)據(jù)報(bào)通信方式是簡便易行的。第21頁,共42頁。1. DatagramPacket類創(chuàng)建DatagramPacket的目的可能有兩個(gè):使用UDP發(fā)送數(shù)據(jù)到遠(yuǎn)端機(jī)器;使用UDP從遠(yuǎn)端機(jī)器接收數(shù)據(jù)。DatagramPacket的構(gòu)造方法至少都包含兩個(gè)參數(shù),其中一個(gè)是字符數(shù)組參數(shù),用于存儲UDP包的內(nèi)容,另一個(gè)是數(shù)據(jù)包的長度。DatagramPacket的不同構(gòu)造方法可用于發(fā)送和接收的不同場景。當(dāng)構(gòu)造的DatagramPacket用于接
7、收UDP包時(shí),則應(yīng)使用以下構(gòu)造方法:DatagramPacket(byte buffer,int length)第22頁,共42頁。其中,buffer為存放接收到的數(shù)據(jù)報(bào)的字節(jié)數(shù)組,length為接收數(shù)據(jù)的長度。當(dāng)構(gòu)造的DatagramPacket用于發(fā)送UDP包到一個(gè)遠(yuǎn)程主機(jī)時(shí),則應(yīng)使用以下構(gòu)造方法:DatagramPacket(byte buffer,int length,InetAddress dest_addr,int dest_port)其中,buffer中保存用于填充數(shù)據(jù)報(bào)的內(nèi)容,length為數(shù)據(jù)長度,dest_addr為目的主機(jī)地址,dest_port為目的端口地址。Datag
8、ramPacket類的主要接口方法及其含義如表11-4所示。第23頁,共42頁。第24頁,共42頁。2. 無連接的通信模型無連接的通信模型相比有連接的通信模型來說更為簡單,其通信模型如圖11-3所示。在無連接通信過程中,數(shù)據(jù)收發(fā)的主體是DatagramSocket類的對象實(shí)例。服務(wù)器和客戶端首先均應(yīng)創(chuàng)建DatagramSocket用以發(fā)送或接收DatagramPacket,DatagramSocket的典型構(gòu)造方法為:DatagramSocket()或 DatagramSocket(int port)第25頁,共42頁。圖11-3 無連接的客戶端/服務(wù)器通信模型第26頁,共42頁。第27頁,共
9、42頁。第28頁,共42頁。3. 無連接的通信示例以下通過一個(gè)例子說明無連接通信的基本方法。在例11-4中,UDPServer首先創(chuàng)建一個(gè)接收數(shù)據(jù)報(bào)的DatagramPacket,接收UDPClient發(fā)送的空數(shù)據(jù)報(bào),獲得UDPClient的IP地址和端口號。然后,UDPServer從控制臺接收一句輸入,將其轉(zhuǎn)化為字節(jié)數(shù)組,并創(chuàng)建用于發(fā)送的DatagramPacket,發(fā)送回UDPClient。UDPClient在收到數(shù)據(jù)報(bào)后在控制臺上打印其內(nèi)容。第29頁,共42頁。第30頁,共42頁。第31頁,共42頁。第32頁,共42頁。11.4 URL通信基于Socket的通信方式允許用戶設(shè)計(jì)自己的應(yīng)用
10、層協(xié)議,實(shí)現(xiàn)更為廣泛和靈活的應(yīng)用程序。而在實(shí)際應(yīng)用中,很多時(shí)候利用已有的應(yīng)用層通信協(xié)議已經(jīng)足夠程序員解決問題。例如當(dāng)我們希望訪問互聯(lián)網(wǎng)上的一些資源時(shí),可以直接使用HTTP和FTP。這時(shí),可以直接使用基于URL的通信方式。第33頁,共42頁。統(tǒng)一資源定位符(Uniform Resource Locator,URL)是互聯(lián)網(wǎng)上資源的統(tǒng)一地址形式,URL可以指向互聯(lián)網(wǎng)上的文件、web站點(diǎn)、ftp站點(diǎn)、新聞組、E-mail地址等資源。使用URL訪問網(wǎng)絡(luò)資源時(shí),只需要在URL中標(biāo)識清楚訪問資源使用的應(yīng)用層協(xié)議,而不再需要考慮這些協(xié)議的具體處理過程。URL通常是由一個(gè)字符串描述的,其基本形式如下:協(xié)議標(biāo)識:/主機(jī)名:端口號路徑名#引用第34頁,共42頁。1. URL類在Java中,URL由java包中的URL類表示。URL類的構(gòu)造方法的一般形式主要有以下兩種:URL(String protocol,String host,int port, String file)或 URL(URL context, String spec)第35頁,共42頁。第36頁,共42頁。第37頁,共42頁。第38頁,共42頁。第39頁,共42頁。2. 基于URL的網(wǎng)絡(luò)資源檢索若想要讀取URL所指向的網(wǎng)絡(luò)資源,可以采用兩種方式:直接使用URL類或者
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 久立集團(tuán)校招筆試題目及答案
- 2025中國科學(xué)院空間應(yīng)用工程與技術(shù)中心2025年校園招聘備考題庫及完整答案詳解1套
- 2025年上海市科創(chuàng)教育研究院招聘備考題庫及參考答案詳解
- 打架之后解協(xié)議書
- 公廁清潔協(xié)議書
- 打蠟廠加工協(xié)議書
- 畫廊聘任合同范本
- 征地勞務(wù)合同范本
- 續(xù)租店鋪合同范本
- 企業(yè)贈酒協(xié)議書
- 電大專科《管理英語1》歷年期末考試試題及答案匯編
- 老年人護(hù)理需求評估表
- 《非政府組織管理》教學(xué)大綱
- QGW1799.1電力安全工作規(guī)程變電部分無附錄
- 核對稿100和200單元概述
- GB/T 19809-2005塑料管材和管件聚乙烯(PE)管材/管材或管材/管件熱熔對接組件的制備
- 無機(jī)及分析化學(xué)考試題(附答案)
- 體質(zhì)中醫(yī)基礎(chǔ)理論課件
- 滬教版2022年五年級語文上冊期末整理復(fù)習(xí)全能練習(xí)單
- 靈芝孢子油課件
- 電力工程檢驗(yàn)批質(zhì)量驗(yàn)收記錄【完整版】
評論
0/150
提交評論