聊天室的設(shè)計(jì)與實(shí)現(xiàn) 參考內(nèi)容_第1頁(yè)
聊天室的設(shè)計(jì)與實(shí)現(xiàn) 參考內(nèi)容_第2頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Java 聊天室的設(shè)計(jì)與實(shí)現(xiàn)學(xué) 院:計(jì)算機(jī)學(xué)院專(zhuān) 業(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客戶(hù)端的設(shè)計(jì)77. 測(cè)試及運(yùn)行結(jié)果107.1服務(wù)器的測(cè)試107.2客戶(hù)端的測(cè)試108.設(shè)計(jì)總結(jié)139. 參考文獻(xiàn)1310.附代碼1410.1服務(wù)器代碼1410.2客戶(hù)端的設(shè)計(jì)17僅供參考#Java 聊天室的設(shè)計(jì)與實(shí)現(xiàn)1. 設(shè)計(jì)背景在互聯(lián)網(wǎng)如此發(fā)達(dá)的今天,即時(shí)通信工具已經(jīng)成為我們?nèi)绯I钪斜夭豢缮俚囊徊糠帧H藗儗?duì)網(wǎng)絡(luò)的依賴(lài)越來(lái)越多,越來(lái)越離不開(kāi)網(wǎng)絡(luò),而由此產(chǎn)生的聊天工具也越來(lái)越多,類(lèi)似有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語(yǔ)言是當(dāng)今流行的網(wǎng)絡(luò)編程語(yǔ)言,它具有面向?qū)ο螅c平臺(tái)無(wú)關(guān),安全,多線(xiàn)程等特點(diǎn)。使用java語(yǔ)言不僅可以實(shí)現(xiàn)大型企業(yè)級(jí)的分布式應(yīng)用系統(tǒng),還能夠?yàn)樾⌒偷牡?,嵌入式設(shè)備進(jìn)行應(yīng)用程序的開(kāi)發(fā)。面向?qū)ο蟮拈_(kāi)發(fā)是當(dāng)今世界最流行的開(kāi)發(fā)方法,它不僅具有更貼近自然地語(yǔ)義,而且有利于軟件的維護(hù)和繼承。此次設(shè)計(jì)的題目為聊天室,可以鞏固所學(xué)的java語(yǔ)言基礎(chǔ)知識(shí),增進(jìn)java語(yǔ)言的編輯基本功,拓寬常用類(lèi)庫(kù)的應(yīng)用,使我們通過(guò)教學(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硬盤(pán)空間:80G開(kāi)發(fā)工具:JDK1.5、Eclipse3. 設(shè)計(jì)目的聊天室雖然程序簡(jiǎn)單,但是在設(shè)計(jì)與實(shí)現(xiàn)的過(guò)程中能夠充分學(xué)到基于Socket的網(wǎng)絡(luò)編程的技術(shù),使我掌握網(wǎng)絡(luò)編程的服務(wù)的技術(shù),能夠充分利用我近期學(xué)到的java編程語(yǔ)言。實(shí)現(xiàn)聊天功能Client/Server的面向連接的編程技術(shù)。使用多線(xiàn)程進(jìn)行多個(gè)客戶(hù)端和服務(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é)們更加深刻的了解,掌握這方面的知識(shí)4. Socket介紹Socket的英文原義是“孔”或“插座”。作為BSD UNIX的進(jìn)程通信機(jī)制,取后一種意思。通常也稱(chēng)作套接字,用于描述IP地址和端口,是一個(gè)通信鏈的句柄。在Internet上的主機(jī)一般運(yùn)行了多個(gè)服務(wù)軟件,同時(shí)提供幾種服務(wù)。每種服務(wù)都打開(kāi)一個(gè)Socket,并綁定到一個(gè)端口上,不同的端口對(duì)應(yīng)于不同的服務(wù)。Socket非常類(lèi)似于電話(huà)插座。在這里,我以一個(gè)國(guó)家級(jí)電話(huà)網(wǎng)為例更加清楚的講解一下Socket。電話(huà)的通話(huà)雙方相當(dāng)于相互通信的2個(gè)進(jìn)程,區(qū)號(hào)是它的網(wǎng)絡(luò)地址;區(qū)內(nèi)一個(gè)單位的交換機(jī)相當(dāng)于一臺(tái)主機(jī),主機(jī)分配給每個(gè)用戶(hù)的局內(nèi)號(hào)碼相當(dāng)于Socket號(hào)。任何用戶(hù)在通話(huà)之前,首先要占有一部電話(huà)機(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ī)開(kāi)機(jī)且可以接受連接請(qǐng)求),拿起電話(huà)話(huà)筒,雙方就可以正式通話(huà),相當(dāng)于連接成功。雙方通話(huà)的過(guò)程,是一方向電話(huà)機(jī)發(fā)出信號(hào)和對(duì)方從電話(huà)機(jī)接收信號(hào)的過(guò)程,相當(dāng)于向Socket發(fā)送數(shù)據(jù)和從socket接收數(shù)據(jù)。通話(huà)結(jié)束后,一方掛起電話(huà)機(jī)相當(dāng)于關(guān)閉Socket,撤消連接。在電話(huà)系統(tǒng)中,一般用戶(hù)只能感受到本地電話(huà)機(jī)和對(duì)方電話(huà)號(hào)碼的存在,建立通話(huà)的過(guò)程,話(huà)音傳輸?shù)倪^(guò)程以及整個(gè)電話(huà)系統(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è)施能提供足夠的通信能力,它就滿(mǎn)足了。抽象出來(lái),Socket實(shí)質(zhì)上提供了進(jìn)程通信的端點(diǎn)。進(jìn)程通信之前,雙方首先必須各自創(chuàng)建一個(gè)端點(diǎn),否則是沒(méi)有辦法建立聯(lián)系并相互通信的。正如打電話(huà)之前,雙方必須各自擁有一臺(tái)電話(huà)機(jī)一樣。在網(wǎng)間網(wǎng)內(nèi)部,每一個(gè)Socket用一個(gè)半相關(guān)描述:(協(xié)議,本地地址,本地端口)。一個(gè)完整的Socket有一個(gè)本地唯一的Socket號(hào),由操作系統(tǒng)分配。最重要的是,Socket是面向客戶(hù)/服務(wù)器模型而設(shè)計(jì)的,針對(duì)客戶(hù)和服務(wù)器程序提供不同的Socket系統(tǒng)調(diào)用。客戶(hù)隨機(jī)申請(qǐng)一個(gè)Socket(相當(dāng)于一個(gè)想打電話(huà)的人可以在任何一臺(tái)入網(wǎng)電話(huà)上撥號(hào)呼叫),系統(tǒng)為之分配一個(gè)Socket號(hào);服務(wù)器擁有全局公認(rèn)的Socket,任何客戶(hù)都可以向它發(fā)出連接請(qǐng)求和信息請(qǐng)求(相當(dāng)于一個(gè)被呼叫的電話(huà)擁有一個(gè)呼叫方知道的電話(huà)號(hào)碼)。Socket利用客戶(hù)/服務(wù)器模式巧妙地解決了進(jìn)程之間建立通信連接的問(wèn)題。服務(wù)器Socket半相關(guān)為全局所公認(rèn)非常重要。根據(jù)傳輸數(shù)據(jù)類(lèi)型的不同,Socket主要分為三類(lèi):流式Socket(SOCKSTREAM),在這種方式下,兩個(gè)通訊的應(yīng)用程序之間要先建立一種虛擬連 接,提供可靠的、面向連接的通信流,它使用TCP協(xié) 議,從而保證了數(shù)據(jù)傳輸?shù)恼_性和有序性。數(shù)據(jù)報(bào)Socket(SOCKDGRAM),它使用數(shù)據(jù)報(bào)協(xié)議UDP,定義了一種無(wú)連接服務(wù),數(shù)據(jù)通過(guò)相互獨(dú)立的 報(bào)文進(jìn)行傳輸,是無(wú)序的,并且不保證可靠、無(wú)差錯(cuò)。原始Socket,原始套接字允許對(duì)底層協(xié)議如IP或 ICMP直接訪(fǎng)問(wèn),它功能強(qiáng)大但使用較為不便。主要用于一些協(xié)議的開(kāi)發(fā)。5. Socket的通信機(jī)制圖:TCP服務(wù)器端創(chuàng)建對(duì)象:Socket()結(jié)束連接回應(yīng)數(shù)據(jù)請(qǐng)求數(shù)據(jù)發(fā)送連接請(qǐng)求Connect()TCP客戶(hù)端接受服務(wù)的返回結(jié)果Read()關(guān)閉Close()向服務(wù)器發(fā)出服務(wù)請(qǐng)求Write()創(chuàng)建對(duì)象Socket()指定端口號(hào):Bind()監(jiān)聽(tīng)客戶(hù)端的連接請(qǐng)求:Listen()阻塞等待連接的建立:Accept()建立連接接受客戶(hù)端的請(qǐng)求消息Read()處理客戶(hù)端的請(qǐng)求消息Write()處理結(jié)果返回給客戶(hù)端Read()關(guān)閉Close()6.程序的設(shè)計(jì)6.1服務(wù)器的設(shè)計(jì)1.新建一個(gè)Java項(xiàng)目用來(lái)實(shí)現(xiàn)服務(wù)器的設(shè)計(jì)2. 服務(wù)器主函數(shù)的創(chuàng)建,使用類(lèi)TestServerSocket3023.創(chuàng)建服務(wù)器的監(jiān)聽(tīng)事件,使用類(lèi)ServerListener024. 在服務(wù)器的監(jiān)聽(tīng)事件中,主要指定服務(wù)器的端口號(hào)以及重寫(xiě)父類(lèi)的run函數(shù)開(kāi)啟新的線(xiàn)程5. 創(chuàng)建基于Socket通信的線(xiàn)程,使用類(lèi)ChatSocket3026. 在創(chuàng)建基于Socket通信的線(xiàn)程中,主要定義一個(gè)Socket變量7. 然后在定義兩個(gè)函數(shù),一個(gè)用于處理數(shù)據(jù)的輸入。8. 另一個(gè)用于處理數(shù)據(jù)的輸出9. 實(shí)現(xiàn)服務(wù)器對(duì)客戶(hù)端進(jìn)行的管理,使用類(lèi)ChatManager30210. 實(shí)現(xiàn)服務(wù)器與客戶(hù)端的連通中,重要的一點(diǎn)就是對(duì)類(lèi)進(jìn)行單例化處理,以為不是任何人都可以隨便創(chuàng)建此類(lèi)(即服務(wù)器)的,別人只可以連接服務(wù)器,而不可以進(jìn)行創(chuàng)建。11. 另外還設(shè)計(jì)的函數(shù)有添加客戶(hù)端,移除客戶(hù)端,以及對(duì)客戶(hù)端的數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā)6.2客戶(hù)端的設(shè)計(jì)1. 首先新建一個(gè)java項(xiàng)目,實(shí)現(xiàn)客戶(hù)端的一些設(shè)計(jì)2. 新建兩個(gè)包,一個(gè)用于實(shí)現(xiàn)功能,另一個(gè)用于實(shí)現(xiàn)聊天的界面設(shè)計(jì)3. 界面的設(shè)計(jì)首先需要新建一個(gè)JFrame,命名為MainView4. 新建框架之后需要,需要為其添加編輯框,按鈕,顯示文本等的控件,添加之后還要為其布局,布局之后顯示如下:5.添加主函數(shù),命名為T(mén)estClient3026.添加對(duì)客戶(hù)端的數(shù)據(jù)處理功能,創(chuàng)建類(lèi)ChatManager3027. 與服務(wù)器的創(chuàng)建一樣,需要對(duì)客戶(hù)端進(jìn)行單例化處理,只有本類(lèi)自己可以創(chuàng)建客戶(hù)端,別人不可以隨便創(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)。打開(kāi)瀏覽器,輸入127.0.0.1:243027.2客戶(hù)端的測(cè)試1. 運(yùn)行客戶(hù)端程序,并新建客戶(hù)端2. 客戶(hù)端連接服務(wù)器3. 當(dāng)點(diǎn)擊“確定”后,在客戶(hù)端的顯示框中,會(huì)顯示“連接服務(wù)器的消息”4. 創(chuàng)建多個(gè)客戶(hù)端,連接服務(wù)器進(jìn)行聊天客戶(hù)端1:客戶(hù)端2:8.設(shè)計(jì)總結(jié)基于孫老師講的Socket的網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)(C+編寫(xiě)版),由于近期我一直在鉆研java編程語(yǔ)言,于是我就做了一個(gè)用java語(yǔ)言編寫(xiě)的基于Socket的網(wǎng)絡(luò)聊天程序的設(shè)計(jì)。通過(guò)本次設(shè)計(jì)我又進(jìn)一步對(duì)基于Socket的網(wǎng)絡(luò)聊天有了新的了解,而且本次通過(guò)我自己獨(dú)立設(shè)計(jì)程序,編寫(xiě)程序,使我對(duì)Client/Server結(jié)構(gòu)軟件的設(shè)計(jì)有了新的認(rèn)識(shí)。對(duì)網(wǎng)絡(luò)編程有了進(jìn)一步的了解。在設(shè)計(jì)的過(guò)程中了解到自己的知識(shí)還是比較有限,使得程序還不夠完善?;仡櫞舜蜫ava程序的編寫(xiě)。從理論到實(shí)踐,可以學(xué)到很多東西,同時(shí)不僅可以鞏固以前學(xué)的東西,而且學(xué)到了很多課本上學(xué)不到的東西,通過(guò)本次設(shè)計(jì),使得自己懂得必須要把理論和實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正掌握這門(mén)技術(shù),也提高了自己獨(dú)立思考的能力,在設(shè)計(jì)的過(guò)程中,可以自己解決。真正體會(huì)到要將一門(mén)知識(shí)學(xué)到可以自己運(yùn)用,才是屬于自己的,因此我必須加強(qiáng)實(shí)踐,多練習(xí)。本次設(shè)計(jì)還有很多不足與缺陷,程序中還有很多問(wèn)題需要完善。比如,服務(wù)器要記錄客戶(hù)端的聊天內(nèi)容,服務(wù)器

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論