第9章Jaa高級編程_第1頁
第9章Jaa高級編程_第2頁
第9章Jaa高級編程_第3頁
第9章Jaa高級編程_第4頁
第9章Jaa高級編程_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、學(xué)習(xí)導(dǎo)讀學(xué)習(xí)導(dǎo)讀 本章將介紹本章將介紹java語言中的一些高級特性:異語言中的一些高級特性:異常處理、多線程機(jī)制、流式常處理、多線程機(jī)制、流式io以及網(wǎng)絡(luò)通信,以及網(wǎng)絡(luò)通信,其中每個部分都能擴(kuò)展成一個專題。讀者在本其中每個部分都能擴(kuò)展成一個專題。讀者在本章學(xué)習(xí)到的只是其中很小的一部分,但是能夠章學(xué)習(xí)到的只是其中很小的一部分,但是能夠從中了解一些基本概念和基本操作,為今后的從中了解一些基本概念和基本操作,為今后的深入學(xué)習(xí)打下基礎(chǔ)。異常處理提供對錯誤的捕深入學(xué)習(xí)打下基礎(chǔ)。異常處理提供對錯誤的捕捉和處理機(jī)制;多線程機(jī)制使得程序的多個子捉和處理機(jī)制;多線程機(jī)制使得程序的多個子任務(wù)能夠任務(wù)能夠“同時同時

2、”執(zhí)行;流式執(zhí)行;流式io提供了對輸入提供了對輸入輸出的讀寫機(jī)制;網(wǎng)絡(luò)通信特性允許輸出的讀寫機(jī)制;網(wǎng)絡(luò)通信特性允許java程序程序通過通過socket實(shí)現(xiàn)底層通信,并利用實(shí)現(xiàn)底層通信,并利用java提供的提供的擴(kuò)展組件實(shí)現(xiàn)高層服務(wù)。擴(kuò)展組件實(shí)現(xiàn)高層服務(wù)。第九章 java高級編程 教學(xué)重點(diǎn)與難點(diǎn)教學(xué)重點(diǎn)與難點(diǎn):v異常處理、多線程機(jī)制、流式異常處理、多線程機(jī)制、流式io以及網(wǎng)絡(luò)通以及網(wǎng)絡(luò)通信的基本概念和模型信的基本概念和模型v異常的捕獲和處理異常的捕獲和處理v多線程的實(shí)現(xiàn)及多線程的實(shí)現(xiàn)及runnable接口的應(yīng)用接口的應(yīng)用v流式輸入輸出的操作、文件讀寫及隨機(jī)訪問流式輸入輸出的操作、文件讀寫及隨機(jī)訪

3、問v基于基于socket的面向連接的網(wǎng)絡(luò)底層通信及高的面向連接的網(wǎng)絡(luò)底層通信及高層服務(wù)層服務(wù)9.1 異常處理在java中,提供了錯誤捕捉和處理機(jī)制,即異常處理機(jī)制。在程序運(yùn)行過程中發(fā)生錯誤時,java允許其不按照正常路徑完成任務(wù),由發(fā)現(xiàn)錯誤的方法拋出封裝了錯誤信息的對象(異常)到其調(diào)用程序,發(fā)出已經(jīng)發(fā)生問題的信號,然后立即退出;而且,程序并不在調(diào)用該方法的代碼處繼續(xù)執(zhí)行,而是由異常處理機(jī)制開始搜索一個能夠處理這種特定錯誤情況的異常處理器。9.1.1 異常分類 throwable類派生出兩個分支:error和exception。error類被認(rèn)為是不能恢復(fù)的嚴(yán)重錯誤,如系統(tǒng)內(nèi)部錯誤和資源耗盡錯誤

4、等。不應(yīng)該拋出這種類型的錯誤,而是讓程序中斷。exception類定義可能遇到的輕微錯誤,分為派生自runtimeexception類的異常和非派生自runtimeexception類的異常。這時,可以寫代碼來處理異常并繼續(xù)程序執(zhí)行,而不是讓程序中斷。區(qū)分runtimeexception和非runtimeexception的規(guī)則是:編程錯誤導(dǎo)致runtimeexception,如被零除、數(shù)組越界訪問、空指針訪問等;而其他異常則是由于意外情況而發(fā)生的,如試圖讀取文件結(jié)尾以后的數(shù)據(jù)、試圖打開錯誤的url、試圖根據(jù)并不代表已存在類的字符串來查找class對象等。9.1.2 方法如何拋出異常 /本方法

5、從長度為2048字節(jié)的某文件中讀入數(shù)據(jù)到字符串對象中。string readfile(bufferedreader in) throws eofexception.while(.)/ch為當(dāng)前讀入的字符。if(ch = -1) /文件尾;/當(dāng)nlen,意味著還未將文件全部讀入字符串,就遇到文件結(jié)束標(biāo)志,視為異常情況。if(n len) throw new eofexception();/或者采用下面的方法:/if(n java filedirectory運(yùn)行結(jié)果如下:顯示指定目錄的內(nèi)容1.ppt2.xls3.docfiledirectory.javafiledirectory.classe:d

6、emotemptemp1.txttemp2.txt更改文件名后,顯示temp子目錄的內(nèi)容temp.txttemp2.txt刪除文件后,顯示temp子目錄的內(nèi)容temp.txt9.4 java網(wǎng)絡(luò)通信傳統(tǒng)的網(wǎng)絡(luò)編程是一項(xiàng)非常細(xì)節(jié)化的工作,程序員必須處理和網(wǎng)絡(luò)有關(guān)的大量細(xì)節(jié),如各種協(xié)議,甚至要理解網(wǎng)絡(luò)相關(guān)的硬件知識。而java則將底層的網(wǎng)絡(luò)通信細(xì)節(jié)予以屏蔽,使得使用的編程模型是一個文件模型,也就是說,可以象操作流一樣來操作網(wǎng)絡(luò)數(shù)據(jù)傳輸。另外,由于在網(wǎng)絡(luò)連接中,通常都需要一個服務(wù)器同時為多個客戶端服務(wù),因此java的多線程機(jī)制也大派用場。9.4.1網(wǎng)絡(luò)基礎(chǔ)知識及java網(wǎng)絡(luò)模型java網(wǎng)絡(luò)模型圖 9

7、.4.2面向連接的流式套接字 【例9.14】具有“回顯”功能的服務(wù)器端和客戶端程序。服務(wù)器端的程序?qū)⒌却蛻舳说妮斎耄缓髮⒖蛻舳说妮斎牖仫@給客戶端,同時在服務(wù)器端的控制臺輸出。而客戶端從控制臺接收輸入后,向服務(wù)器端發(fā)送輸入,并接收服務(wù)器端的回顯數(shù)據(jù),然后顯示在控制臺。 程序代碼見echoserver.java和echoclient.java。服務(wù)器端程序運(yùn)行結(jié)果如下:started: serversocketaddr=/,port=0,localport=9999connection accepted: socketaddr=/,port=162

8、3,localport=9999hello! enter bye to exit.echo: abcecho: cdeecho: efgthe client entered bye!connection will be closed!客戶端程序運(yùn)行結(jié)果如下:socket = socketaddr=localhost/,port=9999,localport=1623enter a string, enter bye to exit!abcecho: abccdeecho: cdeefgecho: efgbye【例9.15】支持多客戶端的“回顯”服務(wù)器端程序。程序代碼見echo

9、serverthread .java。我們先啟動服務(wù)器端,然后啟動兩個客戶端。服務(wù)器端程序運(yùn)行結(jié)果如下:started: serversocketaddr=/,port=0,localport=9999connection 1 accepted: socketaddr=/,port=1656,localport=9999hello! enter bye to exit.connection 2 accepted: socketaddr=/,port=1657,localport=9999hello! enter bye to ex

10、it.echo 1: abcecho 2: abcecho 2: cdeecho 1: cdeecho 2: efgthe client 2 entered bye!connection 2 will be closed!echo 1: efgecho 1: hijkthe client 1 entered bye!connection 1 will be closed!第一個客戶端運(yùn)行結(jié)果如下:socket = socketaddr=localhost/,port=9999,localport=1656enter a string, enter bye to exit!ab

11、cecho 1: abccdeecho 1: cdeefgecho 1: efghijkecho 1: hijkbye第二個客戶端運(yùn)行結(jié)果如下:socket = socketaddr=localhost/,port=9999,localport=1657enter a string, enter bye to exit!abcecho 2: abccdeecho 2: cdeefgecho 2: efgbye9.4.3無連接的數(shù)據(jù)報 對于類似傳輸速度更重要的應(yīng)用,使用無連接的數(shù)據(jù)報協(xié)議udp,即“用戶數(shù)據(jù)報協(xié)議”。udp并不刻意追求數(shù)據(jù)包會完全發(fā)送出去,也不能擔(dān)保它們抵達(dá)的順

12、序與它們發(fā)出時一樣,因此,這是一種“不可靠協(xié)議”。由于其速度比tcp快得多,所以還是能夠在很多應(yīng)用中使用。java對數(shù)據(jù)報的支持與它對tcp套接字的支持大致相同,使用datagramsocket類來表示無連接的socket,接收和發(fā)送數(shù)據(jù)報。接收和要發(fā)送的數(shù)據(jù)報內(nèi)容保存在datagrampacket對象中。udp也有自己的端口,和tcp端口是相互獨(dú)立的。也就是說,可以在端口8080同時運(yùn)行一個tcp和udp服務(wù)程序,兩者之間不會產(chǎn)生沖突。9.4.4 java訪問網(wǎng)絡(luò)資源 在因特網(wǎng)上,已經(jīng)開發(fā)了許多服務(wù),如www瀏覽、email等,而java也提供了相應(yīng)的擴(kuò)展組件,如對于email應(yīng)用,java

13、提供了javamail api,使用時只需要調(diào)用其提供的方法就可以完成如發(fā)送郵件的操作:transport.send(message);在因特網(wǎng)上,我們使用通用資源定位符url(uniform resource locator)來查找資源。url包含了用于查找某個資源的信息,如一張圖片、一個文件等。url資源可以包括很多種,如http資源、ftp資源等。下面就是一個圖像資源的url,屬于http資源。http:/ 。程序代碼見internetaccess.java。程序運(yùn)行結(jié)果如下:本章小結(jié) 通過本章的學(xué)習(xí),了解了java異常處理、多線程機(jī)制、流式io以及網(wǎng)絡(luò)通信的基本概念和模型。在異常處理中,通過java語言提供的先進(jìn)的錯誤糾正與恢復(fù)機(jī)制,可以有效地增強(qiáng)代碼的健壯程度,并使用盡可能精簡的代碼創(chuàng)建大型、可靠的應(yīng)用程序,同時排除程序里那些不能控制的錯誤。java強(qiáng)迫遵守違例所有方面的問題,所以無論庫設(shè)計者還是客戶程序員,都能夠連續(xù)一致地使用它。使用多線程機(jī)制的主要目的是對大量任務(wù)進(jìn)行有序的管理,從而可以通過“輕度”切換來更有效地利用計算機(jī)資源,或者對用戶來說使用界面更加友好,相比進(jìn)程之間的“重度”切換,效率得到很大提高。有效利用計算機(jī)資源的典型應(yīng)用是在io等候期間如何利用cpu;用戶方面的界面友好性的典型體現(xiàn)是如何在一個長時間的數(shù)據(jù)下載過程中靈敏地對“停止”(stop)操作進(jìn)行反應(yīng)

溫馨提示

  • 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

提交評論