《面向?qū)ο蟪绦蛟O(shè)計項目教程》課件 項目15 實現(xiàn)網(wǎng)絡(luò)編程_第1頁
《面向?qū)ο蟪绦蛟O(shè)計項目教程》課件 項目15 實現(xiàn)網(wǎng)絡(luò)編程_第2頁
《面向?qū)ο蟪绦蛟O(shè)計項目教程》課件 項目15 實現(xiàn)網(wǎng)絡(luò)編程_第3頁
《面向?qū)ο蟪绦蛟O(shè)計項目教程》課件 項目15 實現(xiàn)網(wǎng)絡(luò)編程_第4頁
《面向?qū)ο蟪绦蛟O(shè)計項目教程》課件 項目15 實現(xiàn)網(wǎng)絡(luò)編程_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

面向?qū)ο蟪绦蛟O(shè)計項目教程本章學(xué)習(xí)目標(biāo):●了解Java網(wǎng)絡(luò)相關(guān)的API●掌握Socket類及其方法的使用●掌握ServerSocket類的使用項目15實現(xiàn)網(wǎng)絡(luò)編程任務(wù)1part掌握J(rèn)ava網(wǎng)絡(luò)APIJava提供InetAddress類來封裝IP地址或域名,InetAddress類有兩個子類:Inet4Address類和Inet6Address類,分別用于封裝4個字節(jié)的IP地址和6個字節(jié)的IP地址。InetAddress類常用方法如表15-1所示。1.1InetAddress類URL(UniformResourceLocator,統(tǒng)一資源定位器)表示互聯(lián)網(wǎng)上某一資源的地址。資源可以是簡單的文件或目錄,也可以是對更為復(fù)雜對象的引用,例如對數(shù)據(jù)庫或搜索引擎的查詢。URL是最為直觀的一種網(wǎng)絡(luò)定位方法,符合人們的語言習(xí)慣,且容易記憶。在通常情況下,URL可以由協(xié)議名、主機、端口和資源四個部分組成,其語法格式如下所示:protocol://host:port/resourceName

其中:

●protocol是協(xié)議名,指明獲取資源所使用的傳輸協(xié)議,例如http、ftp等,并使用冒號“:”與其他部分進行隔離;

●host是主機名,指定獲取資源的域名,此部分由左邊的雙斜線“//”和右邊的單斜線“/”或可選冒號“:”限制;

●port是端口,指定服務(wù)的端口號,是一個可選參數(shù),由主機名左邊的冒號“:”和右邊的斜線“/”限制;

●resourceName是資源名,指定訪問的文件名或目錄。

例如:URL地址

:8080/student/index.jsp1.2URL類

為了方便處理,Java將URL封裝成URL類,通過URL對象記錄下完整的URL信息。URL類常用方法及功能如表15-2所示。1.2URL類URLConnection代表與URL指定的數(shù)據(jù)源的動態(tài)連接,該類提供一些比URL類更強大的服務(wù)器交互控制的方法,允許使用POST或PUT和其他HTTP請求方法將數(shù)據(jù)送回服務(wù)器。URLConnection是一個抽象類,其常用方法如表15-3所示。1.3URLConnection類

當(dāng)URL地址中包含非西歐字符時,系統(tǒng)會將這些非西歐字符轉(zhuǎn)換成特殊編碼(如“%XX”格式),此種編碼稱為application/x-www-form-urlencodedMIME。在編程過程中如果涉及到普通字符串和application/x-www-form-urlencodedMIME字符串之間相互轉(zhuǎn)換時,就需要使用URLDecoder和URLEncoder兩個工具類。

●URLDecoder工具類提供了一個decode(Strings,Stringenc)靜態(tài)方法,該方法將application/x-www-form-urlencodedMIME字符串轉(zhuǎn)換成普通字符串;

●URLEncoder工具類提供了一個encode(Strings,Stringenc)靜態(tài)方法,該方法與decode()方法正好相反,能夠?qū)⑵胀ǖ淖址D(zhuǎn)換成application/x-www-form-urlencodedMIME字符串。1.4URLDecoder和URLEncoder類任務(wù)2part認(rèn)識基于TCP的網(wǎng)絡(luò)編程TCP/IP通信協(xié)議是一種可靠的、雙向的、持續(xù)的、點對點的網(wǎng)絡(luò)協(xié)議。使用TCP/IP協(xié)議進行通信時,會在通信的兩端各建立一個Socket(套接字),從而在通信的兩端之間形成網(wǎng)絡(luò)虛擬鏈路,其通信原理如圖15.1所示。基于TCP的網(wǎng)路編程本節(jié)概述Java對基于TCP的網(wǎng)絡(luò)通信提供了封裝,使用Socket對象封裝了兩端的通信端口。Socket對象屏蔽了網(wǎng)絡(luò)的底層細(xì)節(jié),例如媒體類型、信息包的大小、網(wǎng)絡(luò)地址、信息的重發(fā)等。Socket允許應(yīng)用程序?qū)⒕W(wǎng)絡(luò)連接當(dāng)成一個IO流,既可以向流中寫數(shù)據(jù),也可以從流中讀取數(shù)據(jù)。一個Socket對象可以用來建立Java的IO系統(tǒng)到Internet上的任何機器(包括本機)的程序連接。

包中提供了網(wǎng)絡(luò)編程所需的類,其中基于TCP協(xié)議的網(wǎng)絡(luò)編程主要使用下面兩種Socket:

●ServerSocket:是服務(wù)器套接字,用于監(jiān)聽并接收來自客戶端的Socket連接;

●Socket:是客戶端套接字,用于實現(xiàn)兩臺計算機之間的通信?;赥CP的網(wǎng)路編程2.1Socket類

使用Socket套接字可以較為方便地在網(wǎng)絡(luò)上傳遞數(shù)據(jù),從而實現(xiàn)兩臺計算機之間的通信。通??蛻舳耸褂肧ocket來連接指定的服務(wù)器,Socket的兩個常用構(gòu)造方法如下:

●Socket(InetAddress|Stringhost,intport):創(chuàng)建連接到指定遠程主機和端口號的Socket對象,該構(gòu)造方法沒有指定本地地址和本地端口號,默認(rèn)使用本地主機IP地址和系統(tǒng)動態(tài)分配的端口;

●Socket(InetAddress|Stringhost,intport,InetAddresslocalAddr,intlocalPort):創(chuàng)建連接到指定遠程主機和端口號的Socket對象,并指定本地IP地址和本地端口號,適用于本地主機有多個IP地址的情況。

需要注意的是:上述兩個Socket構(gòu)造方法都聲明拋出IOException異常,因此在創(chuàng)建Socket對象必須捕獲或拋出異常。端口號建議采用注冊端口(范圍是1024~49151之間的數(shù)),通常應(yīng)用程序使用該范圍內(nèi)的端口,以防止發(fā)生沖突。

例如:創(chuàng)建Socket對象try{Sockets=newSocket("28",9999);...//Socket通信}catch(IOExceptione){e.printStackTrace();}

除了構(gòu)造方法,Socket類常用的其他方法如表15-4所示。2.1Socket類

通常使用Socket進行網(wǎng)絡(luò)通信的具體步驟如下:

①根據(jù)指定IP地址和端口號創(chuàng)建一個Socket對象;

②調(diào)用getInputStream()方法或getOutputStream()方法打開連接到Socket的輸入/輸出流;

③客戶端與服務(wù)器根據(jù)協(xié)議進行交互,直到關(guān)閉連接;

④關(guān)閉客戶端的Socket。

2.1Socket類2.2ServletSocket類ServerSocket是服務(wù)器套接字,運行在服務(wù)器端,通過指定端口主動監(jiān)聽來自客戶端的Socket連接。當(dāng)客戶端發(fā)送Socket請求并與服務(wù)器端建立連接時,服務(wù)器將驗證并接收客戶端的Socket,從而建立客戶端與服務(wù)器之間的網(wǎng)絡(luò)虛擬鏈路;一旦兩端的實體之間建立了虛擬鏈路,就可以相互傳送數(shù)據(jù)。ServerSocket類常用的構(gòu)造方法如下:

●ServerSocket(intport):根據(jù)指定端口來創(chuàng)建一個ServerSocket對象;

●ServerSocket(intport,intbacklog):創(chuàng)建一個ServerSocket對象,指定端口和連接隊列長度,此時增加一個用來改變連接隊列長度的參數(shù)backlog;

●ServerSocket(intport,intbacklog,InetAddresslocalAddr):創(chuàng)建一個ServerSocket對象,指定端口、連接隊列長度和IP地址;當(dāng)機器擁有多個IP地址時,才允許使用localAddr參數(shù)指定具體的IP地址。

需要注意的是:ServerSocket類的構(gòu)造方法都聲明拋出IOException異常,因此在創(chuàng)建ServerSocket對象必須捕獲或拋出異常。另外,在選擇端口號時,建議選擇注冊端口(范圍是1024~49151的數(shù)),通常應(yīng)用程序使用這個范圍內(nèi)的端口,以防止發(fā)生沖突。

下面幾行代碼示例了創(chuàng)建一個ServerSocket對象:try{ ServerSocketserver=newServerSocket(9999);}catch(IOExceptione){ e.printStackTrace();}ServerSocket類常用的其他方法如表15-5所示。2.2ServletSocket類通常使用ServerSocket進行網(wǎng)絡(luò)通信的具體步驟如下:①根據(jù)指定的端口號來實例化一個ServerSocket對象;②調(diào)用ServerSocket對象的accept()方法接收客戶端發(fā)送的Socket對象;③調(diào)用Socket對象的getInputStream()/getOutputStream()方法來建立與客戶端進行交互的IO流;④服務(wù)器與客戶端根據(jù)一定的協(xié)議交互,直到關(guān)閉連接;⑤關(guān)閉服務(wù)器端的Socket;⑥回到第2步,繼續(xù)監(jiān)聽下一次客戶端發(fā)送的Socket請求連接。

2.2ServletSocket類

一般服務(wù)器和客戶端之間,使用Socket進行基于C/S架構(gòu)的網(wǎng)絡(luò)通信,程序設(shè)計的過程如下:

①服務(wù)器端通過某個端口監(jiān)聽是否有客戶端發(fā)送Socket連接請求;

②客戶端向服務(wù)器端發(fā)出一個Socket連接請求;

③服務(wù)器端調(diào)用accept()接收客戶端Socket并建立連接;

④通過調(diào)用Socket對象的getInputStream()/g

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論