




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Java 聊天室的設(shè)計(jì)與實(shí)現(xiàn)學(xué) 院:計(jì)算機(jī)學(xué)院專 業(yè):班 級(jí):學(xué) 號(hào):姓 名:秦向紅指導(dǎo)老師:2014年11月1. 設(shè)計(jì)背景12. 設(shè)計(jì)環(huán)境13. 設(shè)計(jì)目的14. Socket介紹15. Socket的通信機(jī)制圖:36.程序的設(shè)計(jì)46.1服務(wù)器的設(shè)計(jì)46.2客戶端的設(shè)計(jì)77. 測(cè)試及運(yùn)行結(jié)果107.1服務(wù)器的測(cè)試107.2客戶端的測(cè)試108.設(shè)計(jì)總結(jié)139. 參考文獻(xiàn)1310.附代碼1410.1服務(wù)器代碼1410.2客戶端的設(shè)計(jì)17Java 聊天室的設(shè)計(jì)與實(shí)現(xiàn)1. 設(shè)計(jì)背景在互聯(lián)網(wǎng)如此發(fā)達(dá)的今天,即時(shí)通信工具已經(jīng)成為我們?nèi)绯I钪斜夭豢缮俚囊徊糠?。人們?duì)網(wǎng)絡(luò)的依賴越來越多,越來越離不開網(wǎng)絡(luò),而
2、由此產(chǎn)生的聊天工具也越來越多,類似有QQ、MSN、微信等,網(wǎng)絡(luò)聊天使網(wǎng)絡(luò)聊天系統(tǒng)發(fā)展的日新月異,由此產(chǎn)生制作了一個(gè)簡(jiǎn)單的聊天功能的網(wǎng)絡(luò)聊天程序,由此此設(shè)計(jì)我還可以更好的學(xué)習(xí)網(wǎng)絡(luò)軟件的編程知識(shí)。Java語言是當(dāng)今流行的網(wǎng)絡(luò)編程語言,它具有面向?qū)ο?,與平臺(tái)無關(guān),安全,多線程等特點(diǎn)。使用java語言不僅可以實(shí)現(xiàn)大型企業(yè)級(jí)的分布式應(yīng)用系統(tǒng),還能夠?yàn)樾⌒偷牡?,嵌入式設(shè)備進(jìn)行應(yīng)用程序的開發(fā)。面向?qū)ο蟮拈_發(fā)是當(dāng)今世界最流行的開發(fā)方法,它不僅具有更貼近自然地語義,而且有利于軟件的維護(hù)和繼承。此次設(shè)計(jì)的題目為聊天室,可以鞏固所學(xué)的java語言基礎(chǔ)知識(shí),增進(jìn)java語言的編輯基本功,拓寬常用類庫的應(yīng)用,使我們通過
3、教學(xué)環(huán)節(jié)與手段,把所學(xué)的課程及相關(guān)知識(shí)加以融會(huì)貫通,全面理解網(wǎng)絡(luò)編程的含義。2. 設(shè)計(jì)環(huán)境操作系統(tǒng):Window 8CPU:1.80GHz 內(nèi)存:4.00GB硬盤空間:80G開發(fā)工具:JDK1.5、Eclipse3. 設(shè)計(jì)目的聊天室雖然程序簡(jiǎn)單,但是在設(shè)計(jì)與實(shí)現(xiàn)的過程中能夠充分學(xué)到基于Socket的網(wǎng)絡(luò)編程的技術(shù),使我掌握網(wǎng)絡(luò)編程的服務(wù)的技術(shù),能夠充分利用我近期學(xué)到的java編程語言。實(shí)現(xiàn)聊天功能Client/Server的面向連接的編程技術(shù)。使用多線程進(jìn)行多個(gè)客戶端和服務(wù)器的連接,實(shí)現(xiàn)數(shù)據(jù)的讀取與輸入。實(shí)現(xiàn)網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),讓我們掌握網(wǎng)絡(luò)編程的服務(wù)的技術(shù),讓同學(xué)們更加深刻的了解,掌握
4、這方面的知識(shí)4. Socket介紹Socket的英文原義是“孔”或“插座”。作為BSD UNIX的進(jìn)程通信機(jī)制,取后一種意思。通常也稱作"套接字",用于描述IP地址和端口,是一個(gè)通信鏈的句柄。在Internet上的主機(jī)一般運(yùn)行了多個(gè)服務(wù)軟件,同時(shí)提供幾種服務(wù)。每種服務(wù)都打開一個(gè)Socket,并綁定到一個(gè)端口上,不同的端口對(duì)應(yīng)于不同的服務(wù)。Socket非常類似于電話插座。在這里,我以一個(gè)國(guó)家級(jí)電話網(wǎng)為例更加清楚的講解一下Socket。電話的通話雙方相當(dāng)于相互通信的2個(gè)進(jìn)程,區(qū)號(hào)是它的網(wǎng)絡(luò)地址;區(qū)內(nèi)一個(gè)單位的交換機(jī)相當(dāng)于一臺(tái)主機(jī),主機(jī)分配給每個(gè)用戶的局內(nèi)號(hào)碼相當(dāng)于Socket號(hào)
5、。任何用戶在通話之前,首先要占有一部電話機(jī),相當(dāng)于申請(qǐng)一個(gè)Socket;同時(shí)要知道對(duì)方的號(hào)碼,相當(dāng)于對(duì)方有一個(gè)固定的Socket。然后向?qū)Ψ綋芴?hào)呼叫,相當(dāng)于發(fā)出連接請(qǐng)求(假如對(duì)方不在同一區(qū)內(nèi),還要撥對(duì)方區(qū)號(hào),相當(dāng)于給出網(wǎng)絡(luò)地址)。假如對(duì)方在場(chǎng)并空閑(相當(dāng)于通信的另一主機(jī)開機(jī)且可以接受連接請(qǐng)求),拿起電話話筒,雙方就可以正式通話,相當(dāng)于連接成功。雙方通話的過程,是一方向電話機(jī)發(fā)出信號(hào)和對(duì)方從電話機(jī)接收信號(hào)的過程,相當(dāng)于向Socket發(fā)送數(shù)據(jù)和從socket接收數(shù)據(jù)。通話結(jié)束后,一方掛起電話機(jī)相當(dāng)于關(guān)閉Socket,撤消連接。在電話系統(tǒng)中,一般用戶只能感受到本地電話機(jī)和對(duì)方電話號(hào)碼的存在,建立通話
6、的過程,話音傳輸?shù)倪^程以及整個(gè)電話系統(tǒng)的技術(shù)細(xì)節(jié)對(duì)他都是透明的,這也與Socket機(jī)制非常相似。Socket利用網(wǎng)間網(wǎng)通信設(shè)施實(shí)現(xiàn)進(jìn)程通信,但它對(duì)通信設(shè)施的細(xì)節(jié)毫不關(guān)心,只要通信設(shè)施能提供足夠的通信能力,它就滿足了。抽象出來,Socket實(shí)質(zhì)上提供了進(jìn)程通信的端點(diǎn)。進(jìn)程通信之前,雙方首先必須各自創(chuàng)建一個(gè)端點(diǎn),否則是沒有辦法建立聯(lián)系并相互通信的。正如打電話之前,雙方必須各自擁有一臺(tái)電話機(jī)一樣。在網(wǎng)間網(wǎng)內(nèi)部,每一個(gè)Socket用一個(gè)半相關(guān)描述:(協(xié)議,本地地址,本地端口)。一個(gè)完整的Socket有一個(gè)本地唯一的Socket號(hào),由操作系統(tǒng)分配。最重要的是,Socket是面向客戶/服務(wù)器模型而設(shè)計(jì)的,
7、針對(duì)客戶和服務(wù)器程序提供不同的Socket系統(tǒng)調(diào)用??蛻綦S機(jī)申請(qǐng)一個(gè)Socket(相當(dāng)于一個(gè)想打電話的人可以在任何一臺(tái)入網(wǎng)電話上撥號(hào)呼叫),系統(tǒng)為之分配一個(gè)Socket號(hào);服務(wù)器擁有全局公認(rèn)的Socket,任何客戶都可以向它發(fā)出連接請(qǐng)求和信息請(qǐng)求(相當(dāng)于一個(gè)被呼叫的電話擁有一個(gè)呼叫方知道的電話號(hào)碼)。Socket利用客戶/服務(wù)器模式巧妙地解決了進(jìn)程之間建立通信連接的問題。服務(wù)器Socket半相關(guān)為全局所公認(rèn)非常重要。根據(jù)傳輸數(shù)據(jù)類型的不同,Socket主要分為三類:流式Socket(SOCKSTREAM),在這種方式下,兩個(gè)通訊的應(yīng)用程序之間要先建立一種虛擬連 接,提供可靠的、面向連接的通信流
8、,它使用TCP協(xié) 議,從而保證了數(shù)據(jù)傳輸?shù)恼_性和有序性。數(shù)據(jù)報(bào)Socket(SOCKDGRAM),它使用數(shù)據(jù)報(bào)協(xié)議UDP,定義了一種無連接服務(wù),數(shù)據(jù)通過相互獨(dú)立的 報(bào)文進(jìn)行傳輸,是無序的,并且不保證可靠、無差錯(cuò)。原始Socket,原始套接字允許對(duì)底層協(xié)議如IP或 ICMP直接訪問,它功能強(qiáng)大但使用較為不便。主要用于一些協(xié)議的開發(fā)。5. Socket的通信機(jī)制圖:TCP服務(wù)器端創(chuàng)建對(duì)象:Socket()結(jié)束連接回應(yīng)數(shù)據(jù)請(qǐng)求數(shù)據(jù)發(fā)送連接請(qǐng)求Connect()TCP客戶端接受服務(wù)的返回結(jié)果Read()關(guān)閉Close()向服務(wù)器發(fā)出服務(wù)請(qǐng)求Write()創(chuàng)建對(duì)象Socket()指定端口號(hào):Bind(
9、)監(jiān)聽客戶端的連接請(qǐng)求:Listen()阻塞等待連接的建立:Accept()建立連接接受客戶端的請(qǐng)求消息Read()處理客戶端的請(qǐng)求消息Write()處理結(jié)果返回給客戶端Read()關(guān)閉Close()6.程序的設(shè)計(jì)6.1服務(wù)器的設(shè)計(jì)1.新建一個(gè)Java項(xiàng)目用來實(shí)現(xiàn)服務(wù)器的設(shè)計(jì)2. 服務(wù)器主函數(shù)的創(chuàng)建,使用類TestServerSocket3023.創(chuàng)建服務(wù)器的監(jiān)聽事件,使用類ServerListener024. 在服務(wù)器的監(jiān)聽事件中,主要指定服務(wù)器的端口號(hào)以及重寫父類的run函數(shù)開啟新的線程5. 創(chuàng)建基于Socket通信的線程,使用類ChatSocket3026. 在創(chuàng)建基于Socket通信的
10、線程中,主要定義一個(gè)Socket變量7. 然后在定義兩個(gè)函數(shù),一個(gè)用于處理數(shù)據(jù)的輸入。8. 另一個(gè)用于處理數(shù)據(jù)的輸出9. 實(shí)現(xiàn)服務(wù)器對(duì)客戶端進(jìn)行的管理,使用類ChatManager30210. 實(shí)現(xiàn)服務(wù)器與客戶端的連通中,重要的一點(diǎn)就是對(duì)類進(jìn)行單例化處理,以為不是任何人都可以隨便創(chuàng)建此類(即服務(wù)器)的,別人只可以連接服務(wù)器,而不可以進(jìn)行創(chuàng)建。11. 另外還設(shè)計(jì)的函數(shù)有添加客戶端,移除客戶端,以及對(duì)客戶端的數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā)6.2客戶端的設(shè)計(jì)1. 首先新建一個(gè)java項(xiàng)目,實(shí)現(xiàn)客戶端的一些設(shè)計(jì)2. 新建兩個(gè)包,一個(gè)用于實(shí)現(xiàn)功能,另一個(gè)用于實(shí)現(xiàn)聊天的界面設(shè)計(jì)3. 界面的設(shè)計(jì)首先需要新建一個(gè)JFrame,
11、命名為MainView4. 新建框架之后需要,需要為其添加編輯框,按鈕,顯示文本等的控件,添加之后還要為其布局,布局之后顯示如下:5.添加主函數(shù),命名為TestClient3026.添加對(duì)客戶端的數(shù)據(jù)處理功能,創(chuàng)建類ChatManager3027. 與服務(wù)器的創(chuàng)建一樣,需要對(duì)客戶端進(jìn)行單例化處理,只有本類自己可以創(chuàng)建客戶端,別人不可以隨便創(chuàng)建8. 另外有對(duì)服務(wù)器發(fā)送的連接請(qǐng)求函數(shù)9. 對(duì)發(fā)送按鈕的響應(yīng)函數(shù)7. 測(cè)試及運(yùn)行結(jié)果7.1服務(wù)器的測(cè)試1. 運(yùn)行服務(wù)器,查看顯示結(jié)果2. 測(cè)試服務(wù)器綁定的端口號(hào)(24302)。打開瀏覽器,輸入127.0.0.1:243027.2客戶端的測(cè)試1. 運(yùn)行客戶端
12、程序,并新建客戶端2. 客戶端連接服務(wù)器3. 當(dāng)點(diǎn)擊“確定”后,在客戶端的顯示框中,會(huì)顯示“連接服務(wù)器的消息”4. 創(chuàng)建多個(gè)客戶端,連接服務(wù)器進(jìn)行聊天客戶端1:客戶端2:8.設(shè)計(jì)總結(jié)基于孫老師講的Socket的網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)(C+編寫版),由于近期我一直在鉆研java編程語言,于是我就做了一個(gè)用java語言編寫的基于Socket的網(wǎng)絡(luò)聊天程序的設(shè)計(jì)。通過本次設(shè)計(jì)我又進(jìn)一步對(duì)基于Socket的網(wǎng)絡(luò)聊天有了新的了解,而且本次通過我自己獨(dú)立設(shè)計(jì)程序,編寫程序,使我對(duì)Client/ Server結(jié)構(gòu)軟件的設(shè)計(jì)有了新的認(rèn)識(shí)。對(duì)網(wǎng)絡(luò)編程有了進(jìn)一步的了解。在設(shè)計(jì)的過程中了解到自己的知識(shí)還是比較有限,使得程序還不夠完善。回顧此次Java程序的編寫。從理論到實(shí)踐,可以學(xué)到很多東西,同時(shí)不僅可以鞏固以前學(xué)的東西,而且學(xué)到了很多課本上學(xué)不到的東西,通過本次設(shè)計(jì),使得自己懂得必須要把理論和實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正掌握這門技術(shù),也提高了自己獨(dú)立思考的能力,在設(shè)計(jì)的過程中,可以自己解決。真正體會(huì)到要將一門知識(shí)學(xué)到可以自己運(yùn)用,才是屬于自己的,因此我必須加強(qiáng)實(shí)踐,多練習(xí)。本次設(shè)計(jì)還有很多不足與缺陷,程序中還有很多問題需要完善。比如,服務(wù)器要記錄客戶端的聊天內(nèi)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 分期房產(chǎn)合同范本
- 收款付款合同范本
- 京東送包車合同范本
- 單位門頭安裝合同范本
- 醫(yī)用氧氣購銷合同范本
- 助理就業(yè)合同范本
- 包裝材料銷毀合同范本
- 傳媒剪輯合同范本
- 醫(yī)生參加培訓(xùn)合同范本
- 勞務(wù)配送合同范本
- 麥語言函數(shù)手冊(cè)參考模板
- 冷庫噴涂施工工藝(詳細(xì))
- 電機(jī)學(xué)辜承林(第三版)第1章
- 知情同意書-北京大學(xué)腫瘤醫(yī)院
- 建筑材料碳排放因子查詢表
- 觀音神課三十二卦
- 醫(yī)療機(jī)構(gòu)停業(yè)(歇業(yè))申請(qǐng)書
- 發(fā)票(商業(yè)發(fā)票)格式
- 30立方容積表2.6m
- 宮保雞丁ppt課件
- 食品生產(chǎn)企業(yè)生產(chǎn)線員工食品安全知識(shí)培訓(xùn)
評(píng)論
0/150
提交評(píng)論