java論文-網(wǎng)絡(luò)通信_第1頁
java論文-網(wǎng)絡(luò)通信_第2頁
java論文-網(wǎng)絡(luò)通信_第3頁
java論文-網(wǎng)絡(luò)通信_第4頁
java論文-網(wǎng)絡(luò)通信_第5頁
全文預覽已結(jié)束

下載本文檔

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

文檔簡介

1、摘要 本文闡述了使用JAVA編程語言對基于客戶/服務(wù)器模式的應用編寫網(wǎng)絡(luò)通信程序,討論了SOCKET機制、輸入輸出流以及程序?qū)崿F(xiàn)代碼。關(guān)鍵詞 JAVA,網(wǎng)絡(luò),SOCKET,APPLET網(wǎng)絡(luò)上的系統(tǒng)結(jié)構(gòu)多為客戶/服務(wù)器模式,服務(wù)器端負責數(shù)據(jù)和圖像等的存儲、維護、管理以及傳遞,客戶端則負責人機界面的操作、送出需求及顯示收回的數(shù)據(jù)。下面介紹一下如何使用JAVA來進行網(wǎng)絡(luò)編程:1) 由于客戶端通過IE同服務(wù)器建立聯(lián)系,所以客戶端使用Applet,服務(wù)器端使用Application;2) 服務(wù)器應設(shè)置成多線程,應答多個客戶的請求;3) 兩端通信使用SOCKET機制。1 Java中輸入/輸出流概念:過 濾

2、流DataInputStream 和DataOutputStream 除了分別作為FilterInputStream 和FilterOutputStream的子類外,還分別實現(xiàn)了接口DataInput 和DataOutput。接口DataInput 中定義的方法主要包括從流中讀取基本類型的數(shù)據(jù)、讀取一行數(shù)據(jù)、或者讀取指定長度的字節(jié)數(shù),如readBoolean() readInt()、readLine()、readFully()等。接口DataOutput中定義的方法主要是向流中寫入基本類型的數(shù)據(jù)或者寫入一 定長度的字節(jié)數(shù)組,如writeChar()、writeDouble() DataInpu

3、tStream可以從所連接的輸入流中讀取與機器無關(guān)的基本類型數(shù)據(jù),用以實現(xiàn)一種獨立于具體平臺的輸入方式; DataInputStream 可以向所連接的輸出流寫入基本類型的數(shù)據(jù)。2 Socket 機制Socket是面向客戶/服務(wù)器模型 設(shè)計的,網(wǎng)絡(luò)上的兩個程序通過一個雙向的通訊連接實現(xiàn)數(shù)據(jù)的交換,這個雙向鏈路的一端稱為一個Socket。 Socket通常用來實現(xiàn)客戶方和服務(wù)方的連接??蛻舫绦蚩梢韵騍ocket寫請求,服務(wù)器將處理此請求,然后通過Socket將結(jié)果返回給用戶。Socket 通信機制提供了兩種通訊方式:有聯(lián)接和無聯(lián)接方式,分別面向不同的應用需求。使用有聯(lián)接方式時,通信鏈路提供了可靠

4、的,全雙工的字節(jié)流服務(wù)。在該方式下, 通信雙方必須創(chuàng)建一個聯(lián)接過程并建立一條通訊鏈路,以后的網(wǎng)絡(luò)通信操作完全在這一對進程之間進行,通信完畢關(guān)閉此聯(lián)接過程。使用無聯(lián)接方式時其系統(tǒng)開銷比 無聯(lián)接方式小,但通信鏈路提供了不可靠的數(shù)據(jù)報服務(wù),不能保證信源所傳輸?shù)臄?shù)據(jù)一定能夠到達信宿。在該方式下,通信雙方不必創(chuàng)建一個聯(lián)接過程和建立一條通 訊鏈路,網(wǎng)絡(luò)通信操作在不同的主機和進程之間轉(zhuǎn)發(fā)進行。3 Java語言Java語言的優(yōu)點主要表現(xiàn)在:簡單、面向?qū)ο?、多線程、分布性、體系結(jié)構(gòu)中立、安全性等方面。(1) 簡單性Java 與C 語言非常相近,但Java比C 簡單,它拋棄了C 中的一些不是絕對必要的功能,如頭文

5、件、預處理文件、指針、結(jié)構(gòu)、運算符重載、多重繼承以及自動強迫同型。 Java實現(xiàn)了自動的垃圾收集,簡化了內(nèi)存管理的工作。這使程序設(shè)計更加簡便,同時減少了出錯的可能。(2) 面向?qū)ο驤ava提供了簡單的類機制和動態(tài)的構(gòu)架模型。對象中封裝了它的狀態(tài)變量和方法,很好地實現(xiàn)了模塊化和信息隱藏;而類則提供了一類對象的原型,通過繼承和重載機制,子類可以使用或重新定義父類或超類所提供的方法,從而既實現(xiàn)了代碼的復用,又提供了一種動態(tài)的解決方案。Java是一種完全面向?qū)ο蟮某绦蛟O(shè)計語言,它除了數(shù)組、布爾和字符三個基本數(shù)據(jù)類型外的其它類都是對象,它不再支持全局變量。在Java中,如果不創(chuàng)建新類就無法創(chuàng)建程序,Ja

6、va程序在運行時必須先創(chuàng)建一個類的實例,然后才能提交運行。Java同樣支持繼承特性,Java的類可以從其它類中繼承行為,但Java只支持類的單重繼承,即每個類只能從一個類中繼承。Java支持界面,界面允許程序員定義方法但又不立即實現(xiàn),一個類可以實現(xiàn)多個界面,利用界面可以得到多重繼承的許多優(yōu)點而又沒有多重繼承的問題。(3) 多線程多線程使應用程序可以同時進行不同的操作,處理不同的事件。在多線程機制中,不同的線程處理不同的任務(wù),他們之間互不干涉,不會由于一處等待影響其他部分,這樣容易實現(xiàn)網(wǎng)絡(luò)上的實時交互操作。Java程序可以有多個執(zhí)行線程,如可以讓一個線程進行復雜的計算,而讓另一個線程與用戶進行交

7、互,這樣用戶可以在不中斷計算線程的前提下與系統(tǒng)進行交互。多線程保證了較高的執(zhí)行效率。 (4) 分布性Java是面向網(wǎng)絡(luò)的語言。通過它提供的類庫可以處理TCP/IP協(xié)議,用戶可以通過URL地址在網(wǎng)絡(luò)上很方便的訪問其他對象。(5) 體系結(jié)構(gòu)中立Java 是一種網(wǎng)絡(luò)語言,為使Java程序能在網(wǎng)絡(luò)的任何地方運行,Java解釋器生成與體系結(jié)構(gòu)無關(guān)的字節(jié)碼結(jié)構(gòu)的文件格式。Java為了做到結(jié)構(gòu)中立,除生成 機器無關(guān)的字節(jié)碼外,還制定了完全統(tǒng)一的語言文本,如Java的基本數(shù)據(jù)類型不會隨目標機的變化而變化,一個整型總是32位,一個長整型總是64位。為了使Java的應用程序能不依賴于具體的系統(tǒng),Java語言環(huán)境還

8、提供了用于訪問底層操作系統(tǒng)功能的類組成的包,當程序使用這些包時,可以確保它能運行在各種支持Java的平臺上。java.lang: 一般的語言包。其中包括用于字符串處理、多線程、異常處理和數(shù)字函數(shù)等的類,該包是實現(xiàn)Java程序運行平臺的基本包java.util: 實用工具包。其中包括哈希表、堆棧、時間和日期等java.io: 基于流模型的輸入/輸出包。該包用統(tǒng)一的流模型實現(xiàn)了各種格式的輸入/輸出,包括文件系統(tǒng)、網(wǎng)絡(luò)和設(shè)備的輸入/輸出等: 網(wǎng)絡(luò)包。該包支持TCP/IP協(xié)議,其中提供了socket、URL和WWW的編程接口java.awt: 抽象窗口工具集。其中實現(xiàn)了可以跨平臺的圖形用戶界面組件,包

9、括窗口、菜單、滾動條和對話框等java.applet: 支持applet程序設(shè)計的基本包(6) 安全性用于網(wǎng)絡(luò)、分布環(huán)境下的Java必須要防止病毒的入侵,Java不支持指針,一切對內(nèi)存的訪問都必須通過對象的實例變量來實現(xiàn),這樣就防止了程序員使用欺騙手段訪問對象的私有成員,同時也避免了指針操作中容易產(chǎn)生的錯誤。4 JAVA工具(1) JDK1) Java編譯器Java 編譯器將Java源代碼文件編譯成可執(zhí)行的Java字節(jié)碼。Java源代碼文件的擴展名為 .java,Java編譯器把這種擴展名的文件編譯成擴展名為.class的文件。源文件中的每個類在編譯后都將產(chǎn)生一個class文件,這意味一個 J

10、ava源代碼文件可能編譯生成多個class文件。2) Java解釋器Java解釋器對編譯生成的字節(jié)碼格式的可執(zhí)行程序的運行提供支持,它是運行非圖形Java程序的命令行工具。3) Appletviewer它是Java Applet的簡單測試工具,可使用它來測試Java Applet程序,而不需要WWW瀏覽器的支持。(2) Visual J Visual J 集成了可視化界面設(shè)計、交互式調(diào)試、代碼編輯、聯(lián)機幫助信息和介紹如何快速掌握該開發(fā)環(huán)境的實用向?qū)У榷囗椆δ埽瑫r具有能充分利用Active X和COM新技術(shù)的優(yōu)勢。利用Visual J 可創(chuàng)建交互性很強的Internet應用程序,是難得的Jav

11、a 開發(fā)系統(tǒng)。 class ThreadEchoHandler extends Thread /創(chuàng)建線程T2 theT2=new T2();Socket incoming;int counter;ThreadEchoHandler(Socket i,int c) incoming=i;counter=c; while(!done) String aa=""String str=in.readUTF(); /從客戶端得到字符串/在此加入各自的服務(wù)程序if(pareTo("null")!=0 ) /若是查詢數(shù)據(jù)庫,返回查詢后的結(jié)果 /若不是查詢數(shù)據(jù)庫,不向客

12、戶端輸出信息 out.writeUTF(aa);out.flush(); /while incoming.close(); /線程關(guān)閉/try/客戶端通信小應用程序 Echo.javapublic class Echo extends AppletTextArea ta;Socket echoSocket;DataOutputStream os;DataInputStream is;String Line;7 程序調(diào)試心得:1) 在建立Socket連接時,兩端的端口號必須設(shè)為一致,否則建立不了連接。服務(wù)器端必須有主機IP地址或主機名參數(shù)。2) 連接建立好之后應確定輸入和輸出流。起初程序中用的是DataInputStream和PrintStream,結(jié)果只能傳輸英文,傳輸中文時產(chǎn)生亂碼, 將PrintStream改為DataOutputStream,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論