基于Socket接口網(wǎng)絡(luò)通信的實現(xiàn)_第1頁
基于Socket接口網(wǎng)絡(luò)通信的實現(xiàn)_第2頁
基于Socket接口網(wǎng)絡(luò)通信的實現(xiàn)_第3頁
基于Socket接口網(wǎng)絡(luò)通信的實現(xiàn)_第4頁
基于Socket接口網(wǎng)絡(luò)通信的實現(xiàn)_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第 30卷第 5期 唐 山 師 范 學(xué) 院 學(xué) 報 2008年 9月 Vol.30 No.5 Journal of Tangshan Teachers College Sep. 2008 收稿日期:2007-09-06 作者簡介:高偉(1980- ,男,河北唐山人,唐山師范學(xué)院計算機(jī)科學(xué)系助教,現(xiàn)從事計算機(jī)程序語言科研工作。 - 80 -基于 Socket 接口網(wǎng)絡(luò)通信的實現(xiàn)高 偉 1,詹 勝 2(1. 唐山師范學(xué)院 計算機(jī)科學(xué)系,河北 唐山 063000; 2. 唐山師范學(xué)院 組織部,河北 唐山 063000摘 要:利用 Java 語言提供的 DatagramSocket 類與 Datagr

2、amPacket 類,給出了數(shù)據(jù)包雙向傳輸中發(fā)送和接收 的流程,并用實例實現(xiàn)了在客戶機(jī) /服務(wù)器機(jī)制下的信息傳遞過程。關(guān)鍵詞:UDP 協(xié)議; Socket ; C/S模式中圖分類號: T P393文獻(xiàn)標(biāo)識碼:A文章編號:1009-9115(200805-0080-03Construction of Network Communication on the Base of SocketGAO Wei1, ZHAN Sheng2(1. Department of Computer Science, Tangshan Teachers College Hebei Tangshan 063000, C

3、hina;2. Cadre Department of Tangshan Teachers College, Hebei Tangshan 063000, ChinaAbstract: Two species provided by Java language, which are Datagramsocket and DatagramPacket, are used to give the flow chart in sending and incepting the database package. Some examples were given to show the informa

4、tion transportation process in the system of terminal/server.Key words: UDP protocol; socket; mode of C/S現(xiàn)代計算機(jī)網(wǎng)絡(luò)通信是利用操作系統(tǒng)在不同通信協(xié)議 層次上提供的接口實現(xiàn)網(wǎng)絡(luò)進(jìn)程安全通信。 Socket 通信屬于 網(wǎng)絡(luò)底層通信,它是網(wǎng)絡(luò)編程中最常用的概念和工具。在 TCP/IP網(wǎng)絡(luò)中,由于使用 Socket ,能夠在網(wǎng)絡(luò)中處理復(fù)雜 數(shù)據(jù), 所以在各種網(wǎng)絡(luò)應(yīng)用程序中, 涉及到數(shù)據(jù)傳送和接收, 一般都會使用 Socket 。 1 基本理論及概念的提出Socket 俗稱的套接字, 是網(wǎng)絡(luò)上運行

5、的兩個程序間雙向 通信的一端,它既可以接受請求,也可以發(fā)送請求,利用它 可以較為方便地進(jìn)行網(wǎng)絡(luò)上的數(shù)據(jù)傳遞。在 Java 中,可以 將 Socket 類和 ServerSocket 類分別用于客戶端和服務(wù)器, 在 任意兩臺機(jī)器間建立連接。 Socket 類用在客戶端, 用于建立 與服務(wù)器的連接。 ServerSocket 類用于服務(wù)器端,用于接收 客戶端傳送的數(shù)據(jù)。TCP 與 UDP 協(xié)議:TCP (TransmissionControlProtocol , 傳輸控制協(xié)議和 UDP (UserDatagramProtocol ,用戶數(shù)據(jù) 包協(xié)議就是在網(wǎng)絡(luò)傳輸層提供的兩種最常用的協(xié)議。 TCP是

6、一種基于連接的通訊協(xié)議, 當(dāng)兩臺計算機(jī)之間需要進(jìn)行可 靠的數(shù)據(jù)傳輸時,它們通過網(wǎng)絡(luò)建立起一個穩(wěn)定可靠的連 接。 這種連接是點對點的, 通訊的雙方則通過這條數(shù)據(jù)連接 來回傳輸數(shù)據(jù)。而 UDP 與 TCP 協(xié)議之間的不同在于 UDP 不是一種基于穩(wěn)定連接的通訊協(xié)議。 UDP 協(xié)議使用數(shù)據(jù)報 式套接字, UDP 在數(shù)據(jù)傳輸之前不需要先建立連接。 UDP 沒有組裝和重傳請求的功能, 它只是傳輸數(shù)據(jù)包, 但是并不 保證接收方能夠接收到該數(shù)據(jù)包, 也不保證接收方所接收到 的數(shù)據(jù)和發(fā)送方所發(fā)送的數(shù)據(jù)在內(nèi)容和順序上是完全一致 的。 其主要工作是:將應(yīng)用程序傳輸過來的數(shù)據(jù)分塊交給網(wǎng) 絡(luò)層,確認(rèn)接受到分組信息。

7、UDP 使應(yīng)用程序更有效率, 但只在應(yīng)用程序并不是立即交流大量數(shù)據(jù)并且不需要組裝 大量的數(shù)據(jù)報而完成一條消息的時候,否則 TCP 才是最簡 單和最有效的選擇。2 Socket通信基于 Java 的實現(xiàn)采用數(shù)據(jù)報通信方式實現(xiàn) Client/Server 的通信程序。 程 序由客戶端和服務(wù)器端兩部分組成。 服務(wù)器端一旦收到客戶高 偉,等:基于 Socket 接口網(wǎng)絡(luò)通信的實現(xiàn)- 81 -端發(fā)來的數(shù)據(jù)報, 并回應(yīng)簡單和統(tǒng)一的信息。 建立一個簡單 的 UDP 服務(wù)器以實現(xiàn)本文提出的模型, 這里為了簡化設(shè)計, 省略有些代碼。 2.1 服務(wù)器端程序Public Chat Server(intport th

8、rowsException server=newServerSocket(port; publicvoidstartServer(throwsException while(trueSockets=server.accept(;cClient.add(newClientConn(s;classClientConnimplementsRunnable Sockets=null;publicClientConn(Sockets this.s=s;(newThread(this.start(;publicvoidsend(StringstrthrowsIOException DataOutputSt

9、reamdos=newDataOutputStream(s.getOutputStream(;dos.writeUTF(str; publicvoidrun(tryDataInputStreamdis=newDataInputStream(s.getInputStream(;Stringstr=dis.readUTF(; while(str!=null&&str.length(!=0for(Iteratorit=cClient.iterator(;it.hasNext(; ClientConncc=(ClientConnit.next(; if(this!=cc cc.send

10、(str; str=dis.readUTF(;/send(str; s.close(; cClient.remove(this; catch(IOExceptionioe ioe.printStackTrace(; publicstaticvoidmain(StringargsthrowsException ChatServercs=newChatServer(8888; cs.startServer(; 2.2 客戶器端程序publicclassChatClientextendsFrame TextAreata=newTextArea(; TextFieldtf=newTextField(;

11、publicvoidlaunchFrame(throwsExceptionthis.add(ta,BorderLayout.CENTER;this.add(tf,BorderLayout.SOUTH;tf.addActionListener(newActionListener(publicvoidactionPerformed(ActionEventae Sockets=null;publicChatClient(throwsException s=launchFrame(;(newThread(newReceiveThread(.start(; publicvoidsend(Stringst

12、rthrowsExceptionDataOutputStreamdos=newDataOutputStream(s.getOutputStream(;dos.writeUTF(str; publicvoiddisconnect(throwsExceptions.close(;publicstaticvoidmain(StringargsthrowsException BufferedReaderbr=newBufferedReader( newInputStreamReader(System.in;ChatClientcc=newChatClient(; Stringstr=br.readLi

13、ne(;while(str!=null&&str.length(!=0cc.send(str; str=br.readLine(;cc.disconnect(; classReceiveThreadimplementsRunnablepublicvoidrun(if(s=nullreturn;tryDataInputStreamdis=newDataInputStream(s.getInputStream(;Stringstr=dis.readUTF(;while(str!=null&&str.length(!=0第 30卷第 2期 唐 山 師 范 學(xué) 院 學(xué)

14、報 2008年 3月- 82 -3 小結(jié)Java 語言中的 Socket 類的功能非常強(qiáng)大。雖然傳統(tǒng)編 程語言也可以實現(xiàn) Socket 通信,但其實現(xiàn)方法的難度很大。 Java 擁有自己的語言優(yōu)勢。(1 Java 語言對線程的內(nèi)置和本地的支持,它支持多 線程。 這樣在一臺服器與多客戶機(jī)進(jìn)行通信就可以建立并啟 動多個線程來為客戶機(jī)服務(wù)。而編程人員不需要考慮 CPU 對線程之間的調(diào)度。(2 Java 提供管理數(shù)據(jù)流的類,用戶在傳送和接收數(shù) 據(jù)時, 只需定義一個相應(yīng)對象, 用對象相應(yīng)方法接受和發(fā)送 數(shù)據(jù)就可。很好的解決了傳統(tǒng)編程中技術(shù)難點。參考文獻(xiàn) 1 Y. Daniel Liang. 馬海軍 , 景麗 , 等 , 譯 .Java 編程原理與實踐M.北京 :清華大學(xué)出版社 ,2005.2 張孝祥 .Java 就業(yè)培訓(xùn)教程 M.北京 :清華大學(xué)出版社 ,2003.3 朱喜福 , 林建民 , 唐永新 .Java 語言程序設(shè)計 M.北京 :人民郵電出版社 :2004,3237-334.4 Jonathan Knudsen, Patrick Niemeyer. Learning Java (3rdEditionM. O&#

溫馨提示

  • 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

提交評論