計算機(jī)java程序設(shè)計_第1頁
計算機(jī)java程序設(shè)計_第2頁
計算機(jī)java程序設(shè)計_第3頁
計算機(jī)java程序設(shè)計_第4頁
計算機(jī)java程序設(shè)計_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

Java程序設(shè)計孟凡超哈爾濱工業(yè)大學(xué)(威海)計算機(jī)科學(xué)與技術(shù)學(xué)院mengfanchao74@163.com辛運幃,饒一梅,馬素霞.Java程序設(shè)計(第二版).清華大學(xué)出版社,2006.參考資料第1章概述第2章標(biāo)識符和數(shù)據(jù)類型第3章表達(dá)式和流程控制語句第4章數(shù)組、向量和字符串第5章進(jìn)一步討論對象和類第6章Java語言中的異常第7章Java的圖形用戶界面設(shè)計第8章Swing組件第9章JavaApplet第10章Java數(shù)據(jù)流第11章線程第12章Java網(wǎng)絡(luò)功能課程內(nèi)容12.1概述計算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)計算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu):網(wǎng)絡(luò)層次結(jié)構(gòu)模型與各層協(xié)議的集合定義為計算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)。網(wǎng)絡(luò)協(xié)議:是計算機(jī)彼此交流的一種“語言”,是網(wǎng)絡(luò)通信的基礎(chǔ)。任何一種通信協(xié)議都包含三個組成部分:語法、語義、時序。語法:規(guī)定了雙方“如何講”,即確定用戶數(shù)據(jù)與控制信息的結(jié)構(gòu)與形式。語義:規(guī)定了雙方準(zhǔn)備“講什么”,即需要發(fā)出何種控制信息,以及完成的動作與做出的響應(yīng)。時序:規(guī)定雙方“何時進(jìn)行通信”,即對事件實現(xiàn)順序的詳細(xì)說明。12.1概述分層思想設(shè)想位于兩地的兩臺計算機(jī)之間利用計算機(jī)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)通信,將面臨以下的一些問題:兩臺計算機(jī)如何連接?用什么連接線?用什么接頭?怎樣數(shù)據(jù)從源計算機(jī)傳送到目的計算機(jī)?如何標(biāo)識每臺計算機(jī)?怎樣尋找目標(biāo)計算機(jī)?在一臺計算機(jī)中可能同時運行著多個網(wǎng)絡(luò)應(yīng)用程序,存在多路數(shù)據(jù)流,如何確定進(jìn)行數(shù)據(jù)通信的這個過程的數(shù)據(jù)流?當(dāng)網(wǎng)絡(luò)設(shè)備或連接線路性能不一致或者發(fā)生故障,造成傳輸?shù)臄?shù)據(jù)出現(xiàn)差錯甚至丟失時,如何進(jìn)行控制以保證可靠性等。計算機(jī)網(wǎng)絡(luò)一個十分龐大的且復(fù)雜的系統(tǒng)。計算機(jī)網(wǎng)絡(luò)的設(shè)計和實現(xiàn)往往采用化繁為簡、分而治之的思想。即將這樣一個大而復(fù)雜的系統(tǒng)分解為若干個小而簡單的子系統(tǒng),然后再逐個加以處理。——這就是分層的含義。計算機(jī)網(wǎng)絡(luò)中,采用的就是分層的含義。高層使用低層提供的服務(wù)時,并不需要知道低層的實現(xiàn)方法。12.1概述ISO/OSI網(wǎng)絡(luò)參考模型為了使不同體系結(jié)構(gòu)的計算機(jī)網(wǎng)絡(luò)都能互連,國際標(biāo)準(zhǔn)化組織(ISO)和CCITT(國際電報電話咨詢委員會)于1977年成立了一個專門的機(jī)構(gòu)來研究該問題,他們提出一個試圖使各種計算機(jī)在世界范圍內(nèi)互連成網(wǎng)的標(biāo)準(zhǔn)框架,即著名的開放系統(tǒng)互連基本參考模型OSI(OpenSystemsInterconnectionReferenceModel),簡稱為OSI。12.1概述應(yīng)用層表示層會話層傳輸層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層OSI模型的7層12.1概述TCP/IP網(wǎng)絡(luò)參考模型TCP/IP參考模型是計算機(jī)網(wǎng)絡(luò)的祖父ARPANET和其后繼的因特網(wǎng)使用的參考模型。TCP/IP是一組用于實現(xiàn)網(wǎng)絡(luò)互連的通信協(xié)議。Internet網(wǎng)絡(luò)體系結(jié)構(gòu)以TCP/IP為核心。基于TCP/IP的參考模型將協(xié)議分成五個層次,它們分別是:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層、物理層。12.1概述OSI參考模型TCP/IP參考模型應(yīng)用層應(yīng)用層表示層對話層傳輸層傳輸層網(wǎng)絡(luò)層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層數(shù)據(jù)鏈路層物理層物理層OSI參考模型和TCP/IP網(wǎng)絡(luò)參考模型對應(yīng)關(guān)系12.1概述TCP/IP網(wǎng)絡(luò)參考模型5個層次:應(yīng)用層:應(yīng)用層是網(wǎng)絡(luò)應(yīng)用程序及其應(yīng)用層協(xié)議存留的地方。應(yīng)用層包括許多協(xié)議,如HTTP協(xié)議(它為Web文檔提供了請求和轉(zhuǎn)發(fā))、簡單電子郵件傳輸(SMTP)、文件傳輸協(xié)議(FTP)、網(wǎng)絡(luò)遠(yuǎn)程訪問協(xié)議(Telnet)等。傳輸層:傳輸層提供了一個在應(yīng)用程序的客戶機(jī)和服務(wù)器之間傳輸應(yīng)用層報文的服務(wù)。在因特網(wǎng)中,有兩種傳輸層協(xié)議,即TCP和UDP。TCP向它的應(yīng)用程序提供了面向連接的服務(wù),這種服務(wù)包括了應(yīng)用層報文向目的地的確保傳遞和流量控制。UDP向它的應(yīng)用程序提供無連接服務(wù),它是一種最基本的服務(wù)。12.1概述網(wǎng)絡(luò)層:網(wǎng)絡(luò)層負(fù)責(zé)將稱為數(shù)據(jù)報的網(wǎng)絡(luò)層分組從一臺主機(jī)移到到另一臺主機(jī)。在源主機(jī)中的運輸層協(xié)議(TCP/

UDP)向網(wǎng)絡(luò)層遞交運輸層報文段和目的地址,就像你向郵政信件提供目的地址一樣。數(shù)據(jù)鏈路層:為了將分組從一個節(jié)點(主機(jī)或分組交換機(jī))移動到路由器上的下一個節(jié)點,網(wǎng)絡(luò)層必須依靠鏈路層的服務(wù)。在每個節(jié)點,網(wǎng)絡(luò)層將數(shù)據(jù)報下傳給鏈路層,鏈路層沿著路由將數(shù)據(jù)報傳遞給下一個節(jié)點,在該下一個節(jié)點,鏈路層將數(shù)據(jù)報上傳給網(wǎng)絡(luò)層。物理層:鏈路層的任務(wù)是從一個網(wǎng)絡(luò)單元向鄰近的網(wǎng)絡(luò)單元移動整個幀,而物理層的任務(wù)是將該幀的一個一個比特從一個節(jié)點移動到下一個節(jié)點。12.1概述應(yīng)用層運輸層網(wǎng)絡(luò)層鏈路層物理層MMHtMMHtHtHnHnHl報文報文段數(shù)據(jù)報幀源應(yīng)用層運輸層網(wǎng)絡(luò)層鏈路層物理層MMHtMMHtHtHnHnHl報文報文段數(shù)據(jù)報幀目的地鏈路層物理層網(wǎng)絡(luò)層鏈路層物理層MHtHnHlMHtHnHlMMHtHtHnHnHlMMHtHtHnHnHl鏈路層交換機(jī)路由器12.1概述TCP/IP網(wǎng)絡(luò)一些基本概念I(lǐng)P地址:連接到TCP/IP網(wǎng)絡(luò)中的每臺計算機(jī)(或其他設(shè)備)都有唯一的地址,這就是IP地址。端口號(Port):一臺機(jī)器只能通過一條鏈路連接到網(wǎng)絡(luò),但一臺機(jī)器中往往有很多程序需要進(jìn)行網(wǎng)絡(luò)通信,僅靠IP地址區(qū)分不了各應(yīng)用程序,這就需要端口號。端口號是一個標(biāo)記機(jī)器的邏輯通信信道的整整數(shù)。端口號取值范圍0-65535,其中0-1023為系統(tǒng)所保留。套接字(Socket):傳輸層是通常是以TCP和UDP協(xié)議來控制端點到端點的通信,用于通信的端點是由Socket來定義的,Socket是由IP地址和端口號組成的。12.1概述傳輸控制協(xié)議(TCP)

TCP定義了網(wǎng)絡(luò)上程序到程序的數(shù)據(jù)傳輸格式和規(guī)則,提供了IP數(shù)據(jù)包的傳輸確認(rèn)、丟失數(shù)據(jù)包的重新請求、將收到的數(shù)據(jù)包按照它們的發(fā)送次序重新裝配的機(jī)制,是一種面向連接的保證可靠傳輸?shù)膮f(xié)議。發(fā)送方和接收方的成對的兩個socket之間必須建立連接,以便在TCP協(xié)議的基礎(chǔ)上進(jìn)行通信,當(dāng)一個socket(通常都是serversocket)等待建立連接時,另一個socket可以要求進(jìn)行連接,一旦這兩個socket連接起來,它們就可以進(jìn)行雙向數(shù)據(jù)傳輸,雙方都可以進(jìn)行發(fā)送或接收操作。12.1概述用戶數(shù)據(jù)報協(xié)議(UDP)與TCP協(xié)議不同,UDP則是一種無連接的傳輸協(xié)議。利用UDP進(jìn)行數(shù)據(jù)傳輸時,首先需要將要傳輸?shù)牡財?shù)據(jù)定義成數(shù)據(jù)報(Datagram),在數(shù)據(jù)報中指明數(shù)據(jù)所要到達(dá)的端點(Socket),然后再將數(shù)據(jù)報發(fā)送出去。UDP是無序的,不能確保絕對的安全可靠,但是它簡單、效率高。12.1概述域名:一個域名的目的是便于記憶和溝通的一組服務(wù)器的地址。統(tǒng)一資源定位器(URL):URL表示Internet上某一資源的地址。Internet上資源包括HTML文件、圖像文件、聲音文件、動畫文件以及其他任何內(nèi)容。通過URL就可以訪問Internet。瀏覽器或其他程序通過解析格給定的URL就可以在網(wǎng)絡(luò)上查找相應(yīng)的文件或其他資源。一個URL的語法格式如下:

<protocol>://<hostname:port>/dir/filename12.1概述Java網(wǎng)絡(luò)編程作為一種成功的網(wǎng)絡(luò)編程語言,Java為用戶提供了十分完善的網(wǎng)絡(luò)功能,例如,獲取網(wǎng)絡(luò)上的各種資源、與服務(wù)器建立連接和通信等。Java使用流模式來實現(xiàn)網(wǎng)絡(luò)交互,在這里,一個接口同時擁有兩種流:輸入流和輸出流。當(dāng)一個進(jìn)程向另一個進(jìn)程發(fā)送數(shù)據(jù)時,只需將數(shù)據(jù)寫入相應(yīng)接口的輸出流上;而另一個進(jìn)程在接口的輸入流上讀取數(shù)據(jù)。12.1概述Java提供的網(wǎng)絡(luò)編程類:指向網(wǎng)絡(luò)層的類InetAddress面向應(yīng)用層的類URL、URLConnection面向運輸層中與TCP協(xié)議相關(guān)的類Socket、ServerSocket面向運輸層中與UDP協(xié)議相關(guān)的類DatagramPacket、DatagramSocket、MulticastSocket可能產(chǎn)生的例外BindException、ConnectException、MalformedURLException、NoRouteToHostException、ProtocolException、SocketException、UnknownHostException、UnknownServiceException、12.2使用IntetAddress類InetAddress是Java的IP地址封裝類,它不需要用戶了解如何實現(xiàn)地址的細(xì)節(jié)。InetAddress沒有構(gòu)造函數(shù),因此不能用new來構(gòu)造一個InetAddress實例,通常是用它提供的靜態(tài)方法來獲?。浩渲?,host可以是一臺機(jī)器名,也可以是一個IP地址或一個DSN域名。這三種方法通常會產(chǎn)生UnknownHostException異常。publicstaticInetAddressgetByName(Stringhost)publicstaticInetAddressgetLocalHost()publicstaticInetAddress[]getAllByName(String

host)12.2使用IntetAddressInetAddress主要方法:publicbyte[]getAddress();publicStringgetHostAddress();publicStringgetHostName();12.2使用IntetAddress12.3統(tǒng)一資源定位器

URL概念URL表示Internet上某種資源的地址。一個URL的語法格式如下:

<protocol>://<hostname:port>/dir/filenameprotocol:用來表示所要獲取資源的傳輸協(xié)議,如:http、ftp、file等。host_name:用來指示資源所在的主機(jī)。port_number:用來指示連接時所使用的通信端口號。file_name:用來指示該資源在主機(jī)的完整文件名。reference:指示資源中的某個特定位置。12.3統(tǒng)一資源定位器

URL的構(gòu)造方法publicURL(String

spec);

spec是一個完整的可在瀏覽器看的URL地址。URL

u=new

URL(“”);publicURL(URL

context,Stringspec);基于一個已有的URL對象創(chuàng)建一個新的URL對象,多用于訪問同一個主機(jī)上不同的路徑文件。URL

u=new

URL(“”);URL

u1=new

URL(u,“news_show.asp?id=17980”);URLu2=newURL(u,“news_show.asp?id=17994”)12.3統(tǒng)一資源定位器publicURL(Stringprotocol,Stringhost,Stringfile);publicURL(Stringprotocol,Stringhost,intport,Stringfile);需要給出傳輸協(xié)議、機(jī)器名稱、文件名或者加上端口號。URL

u=new

URL(“”);URL

u1=new

URL(“http”,“”,80,“/news_show.asp?id=17980”);12.3統(tǒng)一資源定位器獲取URL的對象屬性public

StringgetProtocol();//獲取該URL的協(xié)議名public

String

getHost();//獲取該URL的主機(jī)名publicintgetPort();//獲取該URL的端口號publicStringgetFile();//獲取該URL的文件名publicStringgetRef();//獲取該URL在文件中的相對位publicStringgetPath();//獲取該URL的路徑publicStringgetAuthority();//獲取該URL的權(quán)限信息publicStringgetUserInfo();//獲得使用者的信息12.3統(tǒng)一資源定位器12.3統(tǒng)一資源定位器12.3統(tǒng)一資源定位器讀入URL數(shù)據(jù)URL類中定義了openStream()方法,通過這個方法可以讀取一個URL對象所指定的資源。方法openStream()與指定的URL建立連接并返回一個InputStream對象,即這個方法的返回值是一個InputStream數(shù)據(jù)流。12.3統(tǒng)一資源定位器12.3統(tǒng)一資源定位器通過URLConnection實現(xiàn)雙向通信通過URL的方法openStream()只能從網(wǎng)絡(luò)上讀取資源的數(shù)據(jù)。通過URLConnection類可以在應(yīng)用程序和URL資源之間進(jìn)行交互,既可以從URL中讀取數(shù)據(jù),也可以向URL中發(fā)送數(shù)據(jù)。建立連接URL

url=new

URL(“”);URLConnection

con=url.openConnection();向服務(wù)器端發(fā)送數(shù)據(jù)PrintStream

ps=new

PrintStream(con.getOutputStream());ps.println(StringData);從服務(wù)器讀數(shù)據(jù)DataInputStream

dis=new

DataInputStream(con.getInputStream());dis.readLine();12.3統(tǒng)一資源定位器12.4

Socket接口基于TCP協(xié)議實現(xiàn)網(wǎng)絡(luò)通信的類:客戶端Socket類和服務(wù)端ServerSocket類。通信的一般步驟:(1)先在服務(wù)器端生成一個ServerSocket實例對象,并通過accept()方法隨時監(jiān)聽客戶端的連接請求。(2)當(dāng)客戶端需要連接時,相應(yīng)地要生成一個Socket實例對象,并發(fā)出連接請求,其中host參數(shù)指明該主機(jī)名,port參數(shù)指明該主機(jī)端口號。(3)服務(wù)器端通過accept()方法接收到客戶端的請求后,開辟一個接口與之進(jìn)行連接,并生成所需的I/O數(shù)據(jù)流。(4)客戶端和服務(wù)器端的通信都是通過一對InputStream和OutputStream進(jìn)行的。通信結(jié)束后,兩端分別關(guān)閉對象的Socket接口。12.4

Socket接口Server端

Client端Accept()inputStreamoutputStream12.4

Socket接口客戶端Socket類客戶端可以通過構(gòu)造一個Socket類對象來建立與服務(wù)器的連接。Socket類構(gòu)造方法:public

Socket(Stringaddress,intport)public

Socket(InetAddressaddress,intport)public

Socket(Stringhost,intport,InetAddresslocalAddr,intlocalPort)public

Socket(InetAddressaddress,intport,InetAddresslocalAddr,intlocalPort)12.4

Socket接口方法名功能說明voidclose()關(guān)閉Socket連接InetAddressgetInetAddress()獲取當(dāng)前連接的遠(yuǎn)程主機(jī)的Internet地址InputStreamgetInputStream()獲取Socket對應(yīng)的輸入流InetAddressgetLocalAddress()獲取本地主機(jī)的Internet地址intgetLocalPort()獲取本地連接的端口號OutputStreamgetOutputStream()獲取該Socket的輸出流intgetPort()獲取遠(yuǎn)程主機(jī)端口號voidshutdownInput()關(guān)閉輸入流voidshutdownOutput()關(guān)閉輸出流Socket類主要方法:12.4

Socket接口ServerSocket類ServerSocket類用在服務(wù)器端,用來監(jiān)聽所有來自指定端口的連接,并為每個新

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論