第14章Java網(wǎng)絡(luò)編程基礎(chǔ)_第1頁
第14章Java網(wǎng)絡(luò)編程基礎(chǔ)_第2頁
第14章Java網(wǎng)絡(luò)編程基礎(chǔ)_第3頁
第14章Java網(wǎng)絡(luò)編程基礎(chǔ)_第4頁
第14章Java網(wǎng)絡(luò)編程基礎(chǔ)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Java程序設(shè)計(jì)及應(yīng)用開發(fā)教程主編:虞益誠E-mail:yuyich@教學(xué)課件2023/1/111Java程序設(shè)計(jì)及應(yīng)用開發(fā)教程構(gòu)架Java語言以其面向?qū)ο笮?、可重用性、平臺(tái)無關(guān)性、多線程、安全可靠等特性成為網(wǎng)絡(luò)程序設(shè)計(jì)中的佼佼者,受到廣泛的青睞三大模塊Java概述與語言基礎(chǔ)Java異常處理圖形用戶界面編程Java線程機(jī)制與AppletJavaJava應(yīng)用開發(fā)與課程設(shè)計(jì)實(shí)例教參Java流程控制及數(shù)組與字符串高級(jí)GUI設(shè)計(jì)技術(shù)輸入輸出流Java網(wǎng)絡(luò)編程基礎(chǔ)Java數(shù)據(jù)庫連接第13-15

應(yīng)用開發(fā)篇

第1-6

章基礎(chǔ)知識(shí)篇

第7-12章程序設(shè)計(jì)篇

面向?qū)ο蟪绦蛟O(shè)計(jì)和繼承與多態(tài)2023/1/112第14章Java網(wǎng)絡(luò)編程基礎(chǔ)第14章Java網(wǎng)絡(luò)編程基礎(chǔ)14.1

網(wǎng)絡(luò)編程基礎(chǔ)14.2 URL編程14.3 InetAdress類14.4 Socket通信14.5 本章小結(jié)

Java的平臺(tái)無關(guān)性使其在網(wǎng)絡(luò)上的開發(fā)獲得了空前的成功,也喚起了人們對(duì)Java網(wǎng)絡(luò)編程關(guān)注。本章將主要講述網(wǎng)絡(luò)編程基礎(chǔ)、URL構(gòu)成、URL類、URLConnection類,同時(shí)介紹了InetAdress類、Socket通信步驟、ServerSocket類與Socket類的運(yùn)用。

2023/1/113第14章Java網(wǎng)絡(luò)編程基礎(chǔ)14.1

網(wǎng)絡(luò)編程基礎(chǔ)

Java的平臺(tái)無關(guān)性使其在網(wǎng)絡(luò)上的開發(fā)獲得了空前的成功,也喚起了人們對(duì)Java網(wǎng)絡(luò)編程關(guān)注。1.TCP/IP協(xié)議集

TCP/IP是一種計(jì)算機(jī)間的通信規(guī)則,它規(guī)定了計(jì)算機(jī)之間通信的所有細(xì)節(jié),規(guī)定了每臺(tái)計(jì)算機(jī)信息表示的格式和含義,規(guī)定了計(jì)算機(jī)之間通信所使用的控制信息,以及在在接到控制信息后應(yīng)該作出的反應(yīng)。TCP/IP參考模型包括應(yīng)用層(ApplicationLayer)、傳輸層(TransportLayer)、網(wǎng)間網(wǎng)層(LayerbetweenNetwork)和網(wǎng)絡(luò)接口層(NetworkInterfaceLayer)四層,如圖13-1所示。

2.TCP與UDP協(xié)議TCP/IP模型的傳輸層提供了兩種傳輸協(xié)議,即傳輸控制協(xié)議TCP和用戶數(shù)據(jù)報(bào)協(xié)議UDP。TCP是面向連接的協(xié)議,在傳遞數(shù)據(jù)之前必須和目標(biāo)結(jié)點(diǎn)建立連接,然后再傳送數(shù)據(jù),傳送數(shù)據(jù)結(jié)束后,關(guān)閉連接。UDP(UserDatagramProtocol)是一種無連接協(xié)議,無須事先建立連接即可直接傳送帶有目標(biāo)結(jié)點(diǎn)信息的數(shù)據(jù)報(bào)。2023/1/114第14章Java網(wǎng)絡(luò)編程基礎(chǔ)14.1網(wǎng)絡(luò)編程基礎(chǔ)03.IP地址與域名為確保Internet上每臺(tái)主機(jī)在通信時(shí)能互相識(shí)別,每臺(tái)主機(jī)都必須有一個(gè)唯一的地址,即IP地址來標(biāo)識(shí)主機(jī)在網(wǎng)上位置。IP地址由32位二進(jìn)制數(shù)構(gòu)成,分為四段(4個(gè)字節(jié)),每段8位,可用小于256的十進(jìn)制數(shù)來表示,段間用圓點(diǎn)隔開。域名的一般形式為:主機(jī)名.網(wǎng)絡(luò)名.機(jī)構(gòu)名.頂級(jí)域名

如,北京大學(xué)的域名是/,IP地址為04.端口與數(shù)據(jù)報(bào)端口(Port)和IP地址為網(wǎng)絡(luò)通信的應(yīng)用程序提供了一種確定的地址標(biāo)識(shí)IP地址表示了發(fā)送端的目的計(jì)算機(jī),而端口表明了將數(shù)據(jù)包發(fā)送給目的計(jì)算機(jī)上的哪一個(gè)應(yīng)用程序。由于計(jì)算機(jī)網(wǎng)絡(luò)中端口是用16位二進(jìn)制數(shù)表示的,因而端口號(hào)分布在0到16535之間。其中,0到1023間的端口號(hào)分配給常用的網(wǎng)絡(luò)服務(wù),如HTTP占用端口80,F(xiàn)TP占用端口21,telnet占用端口23等。數(shù)據(jù)報(bào)(datagraph)是一種面向非連接的、以數(shù)據(jù)報(bào)方式工作的通信,適用于網(wǎng)絡(luò)層不可靠的數(shù)據(jù)傳輸與訪問。5.服務(wù)器與客戶機(jī)提供資源的計(jì)算機(jī)叫做服務(wù)器,而把使用資源的計(jì)算機(jī)叫做客戶機(jī)。

2023/1/115第14章Java網(wǎng)絡(luò)編程基礎(chǔ)14.1

網(wǎng)絡(luò)編程基礎(chǔ)16.Socket套接字

Socket套接字是網(wǎng)絡(luò)驅(qū)動(dòng)層提供給應(yīng)用程序編程的接口和管理方法,用于處理數(shù)據(jù)接收與輸出。Socket在應(yīng)用層創(chuàng)建,通過一定的綁定機(jī)制與應(yīng)用程序建立聯(lián)系,告訴對(duì)方自己的IP地址與端口號(hào),然后應(yīng)用程序給Socket數(shù)據(jù),由Socket交給驅(qū)動(dòng)程序向網(wǎng)絡(luò)發(fā)布,接收方可從Socket提取相應(yīng)的數(shù)據(jù)。

7.網(wǎng)絡(luò)編程方法與分類用Java實(shí)現(xiàn)計(jì)算機(jī)網(wǎng)絡(luò)的底層通信就是用Java程序?qū)崿F(xiàn)網(wǎng)絡(luò)通信所規(guī)定的功能和操作。Java通過軟件包實(shí)現(xiàn)多種網(wǎng)上通信模式:Socket通信模式、URL通信模式、InetAddress通信模式以及Datagram通信模式等。14.2URL編程14.2.1URL構(gòu)成URL由4部分組成:資源類型(如HTTP、FTP、TeleNet等)、存放資源的主機(jī)域名、資源文件名和端口。URL的通用格式是:協(xié)議名://主機(jī)名:端口號(hào)/資源路徑

2023/1/116第14章Java網(wǎng)絡(luò)編程基礎(chǔ)14.2.2URL類

Java語言訪問網(wǎng)絡(luò)資源是通過URL類來實(shí)現(xiàn)的。要使用URL進(jìn)行通信,就要使用URL類創(chuàng)建其對(duì)象,通過調(diào)用URL類的方法完成網(wǎng)絡(luò)通信。1.創(chuàng)建URL類的對(duì)象URL類提供用于創(chuàng)建URL對(duì)象構(gòu)造方法有如下4個(gè):

(1)publicURL(Stringurl);它是使用URL的字符串來創(chuàng)建URL對(duì)象。如:URLmyurl=newURL(“/”);(2)publicURL(URLbaseURL,StringrelativeURL);baseURL是絕對(duì)路徑,relativeURL是相對(duì)位置。如:URLmyWeb=newURL(“/”);URLmyMat=newURL(myWeb,”jjgl/index.html”);若myWeb為null與方法(1)同。(3)publicURL(Stringprotocol,Stringhost,StringfileName);這個(gè)構(gòu)造方法中指定了協(xié)議名“protocol”、主機(jī)名“host”、文件名“fileName”,端口使用缺省值。如:URLmyurlhost=newURL(“http”,.on,”index.html”);(4)publicURL(Stringprotocol,Stringhost,intport,StringfileName);該構(gòu)造方法與(3)構(gòu)造方法相比較多了一個(gè)端口號(hào)“port”。如:URLmyurlport=newURL(“http”,.on,80,”index.html”);2023/1/117第14章Java網(wǎng)絡(luò)編程基礎(chǔ)14.2URL編程2.URL類的主要方法一個(gè)URL對(duì)象生成后其屬性是不能被改變的,可以通過類URL所提供的方法來獲取這些屬性。URL類的主要方法如表13-1所示?!纠?3-1】利用URL訪問上海應(yīng)用技術(shù)學(xué)院網(wǎng)站和新浪網(wǎng)站。

2023/1/118第14章Java網(wǎng)絡(luò)編程基礎(chǔ)14.2URL編程014.2.3URLConnection類

使用URLConnection類可獲取網(wǎng)站信息并向遠(yuǎn)程網(wǎng)絡(luò)服務(wù)器傳送信息??赏ㄟ^getInputStream()與getOutoutSream()方法來完成諸多任務(wù)。1.創(chuàng)建URLConnect類對(duì)象使用URLConnection對(duì)象前,須先創(chuàng)建一個(gè)URL對(duì)象,然后通過調(diào)用該對(duì)象的openConnection()方法來返回該URL地址的URLConnect對(duì)象。如:URLmyurl=newURL(“/”);//創(chuàng)建一個(gè)URL對(duì)象URLConnectionConnect=myurl.openConnection();//創(chuàng)建類鏈接通道

2.建立輸入輸出數(shù)據(jù)流在建立URLConnection類的對(duì)象的同時(shí)就已在本機(jī)和URL節(jié)點(diǎn)之間建立了一條一次連接且有確認(rèn)雙方身份的HTTP通道。例如:DataInputStreamDin=newDataInputStream(Connect.getInputStream());//建立輸入流PrintStreamDout=newPrintStream(Connect.getoutputStream()); //建立輸出流【例13-2】利用URL獲取本地或遠(yuǎn)程服務(wù)器端的數(shù)據(jù)。2023/1/119第14章Java網(wǎng)絡(luò)編程基礎(chǔ)【例13-3】簡單搜索引擎的開發(fā)設(shè)計(jì)importjava.awt.*;importjava.applet.*;importjava.awt.event.*;import.*;publicclassURLConnectionNetExextendsAppletimplementsActionListener{StringwebList[]={"","","",""}; //確定搜索引擎對(duì)應(yīng)網(wǎng)址StringwebName[]={“百度”,“新浪”,“Google”,“北大天網(wǎng)”};//確定引擎名稱Choiceselect;publicvoidinit(){select=newChoice();Buttonb=newButton("點(diǎn)擊搜索");for(inti=0;i<=3;i++){select.addItem(webName[i]);}add(select);b.addActionListener(this);add(b);}publicvoidactionPerformed(ActionEvente){Strings=e.getActionCommand();if(s.equals("點(diǎn)擊搜索")){//判斷點(diǎn)擊按鈕名稱intno=select.getSelectedIndex();openWeb(no);}}//獲取所選搜索引擎號(hào).打開網(wǎng)站

voidopenWeb(intindex){try{URLurl=newURL(webList[index]);getAppletContext().showDocument(url); //顯示網(wǎng)站相應(yīng)網(wǎng)頁內(nèi)容}catch(Exceptione){}}//openWeb()方法結(jié)束 }2023/1/1110第14章Java網(wǎng)絡(luò)編程基礎(chǔ)14.3InetAdress類

InetAddress可用于標(biāo)識(shí)網(wǎng)絡(luò)的硬件資源,包中的InetAddress類提供了一系列描述使用網(wǎng)絡(luò)資源的方法。1.獲取Internet上主機(jī)地址通??梢允褂肐netAddress類的靜態(tài)方法來構(gòu)造實(shí)例:publicstaticInetAddressgetByName(Stringhost);該方法將一個(gè)域名或IP地址傳遞給該方法的參數(shù)host(可為機(jī)器名、域名或IP地址),進(jìn)而獲得一個(gè)InetAddress對(duì)象。因而該對(duì)象含有了主機(jī)地址的域名和IP地址。此外,InetAddress類中尚含有兩個(gè)常用的實(shí)例方法:

publicStringgetHostName();//用來獲取InetAddress對(duì)象所含域名

publicStringgetHostAddress();//用來獲取InetAddress對(duì)象所含的IP地址。2.獲取本地機(jī)的地址

Java中可以使用InetAddress類的靜態(tài)方法來獲取本地機(jī)的地址。

getLocalHost();用來獲得一個(gè)含有本地機(jī)域名和IP地址的InetAddress對(duì)象

【例13-4】從網(wǎng)上獲取域名或IP地址。

2023/1/1111第14章Java網(wǎng)絡(luò)編程基礎(chǔ)14.4Socket通信

網(wǎng)絡(luò)上用戶的應(yīng)用程序可以通過Socket(套接字)與其他用戶進(jìn)行通信。Socket是通信端點(diǎn)的一種抽象,它提供了一種發(fā)送和接收數(shù)據(jù)的機(jī)制。WindowsSocket有兩種形式:數(shù)據(jù)報(bào)Socket和流式Socket。在此,關(guān)注后者,文中不加說明泛指流式Socket,它是采用TCP作為傳輸控制協(xié)議。14.4.1Socket概念

Socket是TCP/IP的編程接口,即利用Socket提供的一組API就可以通過編程實(shí)現(xiàn)TCP/IP協(xié)議。在Java中,Socket通信所采用的流式套接字通信方式,是使用TCP協(xié)議,實(shí)現(xiàn)客戶/服務(wù)器之間雙向通信。14.4.2Socket通信步驟

Socket通信過程分為如下三個(gè)步驟:(1)建立連接:首先客戶端程序申請(qǐng)連接,而服務(wù)器端程序監(jiān)聽所有端口,判斷是否有客戶程序的服務(wù)請(qǐng)求,有則服務(wù)器就將Socket連接到該端口上,建立了一個(gè)專用的虛擬連接。(2)數(shù)據(jù)通信:客戶程序可向Socket寫入請(qǐng)求,服務(wù)器程序處理請(qǐng)求并把結(jié)果通過Socket返回給客戶機(jī),完成通過虛擬通道的數(shù)據(jù)通信。(3)拆除連接:通信結(jié)束,將所建立的虛擬連接全部拆除。2023/1/1112第14章Java網(wǎng)絡(luò)編程基礎(chǔ)14.4.3ServerSocket類與Socket類

J包中提供了:ServerSocket和Socket兩個(gè)類,分別用于服務(wù)器端和客戶端的Socket通信。ServerSocket和Socket類的主要構(gòu)造方法如表13-2所示。1.創(chuàng)建Serversocket類對(duì)象和Socket類對(duì)象

創(chuàng)建ServerSocket對(duì)象ServerSocket對(duì)象負(fù)責(zé)等待客戶端請(qǐng)求建立套接字連接,可用于創(chuàng)建一個(gè)在指定端口處設(shè)置監(jiān)聽服務(wù)的ServerSo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論