聊天室的設(shè)計與實現(xiàn)_第1頁
聊天室的設(shè)計與實現(xiàn)_第2頁
聊天室的設(shè)計與實現(xiàn)_第3頁
聊天室的設(shè)計與實現(xiàn)_第4頁
聊天室的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Java聊天室的設(shè)計與實現(xiàn)學(xué)院:計算機(jī)學(xué)院專業(yè):班級:學(xué)號:姓名:秦向紅指導(dǎo)老師:11月

TOC\o"1-3"\h\u120301.設(shè)計背景 1184142.設(shè)計環(huán)境 1260033.設(shè)計目的 123574.Socket介紹 1181245.Socket的通信機(jī)制圖: 3312396.程序的設(shè)計 4112676.1服務(wù)器的設(shè)計 4173936.2客戶端的設(shè)計 7326927.測試及運行成果 10230967.1服務(wù)器的測試 1061317.2客戶端的測試 10212158.設(shè)計總結(jié) 13291709.參考文獻(xiàn) 132473810.附代碼 141601110.1服務(wù)器代碼 141582810.2客戶端的設(shè)計 17Java聊天室的設(shè)計與實現(xiàn)設(shè)計背景在互聯(lián)網(wǎng)如此發(fā)達(dá)的今天,即時通信工具已經(jīng)成為我們?nèi)绯I钪斜夭豢缮俚囊徊糠帧H藗儗W(wǎng)絡(luò)的依賴越來越多,越來越離不開網(wǎng)絡(luò),而由此產(chǎn)生的聊天工具也越來越多,類似有QQ、MSN、、微信等,網(wǎng)絡(luò)聊天使網(wǎng)絡(luò)聊天系統(tǒng)發(fā)展的日新月異,由此產(chǎn)生制作了一種簡樸的聊天功效的網(wǎng)絡(luò)聊天程序,由此此設(shè)計我還能夠更加好的學(xué)習(xí)網(wǎng)絡(luò)軟件的編程知識。Java語言是當(dāng)今流行的網(wǎng)絡(luò)編程語言,它含有面對對象,與平臺無關(guān),安全,多線程等特點。使用java語言不僅能夠?qū)崿F(xiàn)大型公司級的分布式應(yīng)用系統(tǒng),還能夠為小型的的,嵌入式設(shè)備進(jìn)行應(yīng)用程序的開發(fā)。面對對象的開發(fā)是當(dāng)今世界最流行的開發(fā)辦法,它不僅含有更貼近自然地語義,并且有助于軟件的維護(hù)和繼承。本次設(shè)計的題目為聊天室,能夠鞏固所學(xué)的java語言基礎(chǔ)知識,增進(jìn)java語言的編輯基本功,拓寬慣用類庫的應(yīng)用,使我們通過教學(xué)環(huán)節(jié)與手段,把所學(xué)的課程及有關(guān)知識加以融會貫穿,全方面理解網(wǎng)絡(luò)編程的含義。設(shè)計環(huán)境操作系統(tǒng):Window8CPU:1.80GHz內(nèi)存:4.00GB硬盤空間:80G開發(fā)工具:JDK1.5、Eclipse設(shè)計目的聊天室即使程序簡樸,但是在設(shè)計與實現(xiàn)的過程中能夠充足學(xué)到基于Socket的網(wǎng)絡(luò)編程的技術(shù),使我掌握網(wǎng)絡(luò)編程的服務(wù)的技術(shù),能夠充足運用我近期學(xué)到的java編程語言。實現(xiàn)聊天功效Client/Server的面對連接的編程技術(shù)。使用多線程進(jìn)行多個客戶端和服務(wù)器的連接,實現(xiàn)數(shù)據(jù)的讀取與輸入。實現(xiàn)網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計與實現(xiàn),讓我們掌握網(wǎng)絡(luò)編程的服務(wù)的技術(shù),讓同窗們更加深刻的理解,掌握這方面的知識Socket介紹Socket的英文原義是“孔”或“插座”。作為BSDUNIX的進(jìn)程通信機(jī)制,取后一種意思。普通也稱作"套接字",用于描述IP地址和端口,是一種通信鏈的句柄。在Internet上的主機(jī)普通運行了多個服務(wù)軟件,同時提供幾個服務(wù)。每種服務(wù)都打開一種Socket,并綁定到一種端口上,不同的端口對應(yīng)于不同的服務(wù)。Socket非常類似于電話插座。在這里,我以一種國家級電話網(wǎng)為例更加清晰的解說一下Socket。電話的通話雙方相稱于互相通信的2個進(jìn)程,區(qū)號是它的網(wǎng)絡(luò)地址;區(qū)內(nèi)一種單位的交換機(jī)相稱于一臺主機(jī),主機(jī)分派給每個顧客的局內(nèi)號碼相稱于Socket號。任何顧客在通話之前,首先要占有一部電話機(jī),相稱于申請一種Socket;同時要懂得對方的號碼,相稱于對方有一種固定的Socket。然后向?qū)Ψ綋芴柡艉?,相稱于發(fā)出連接請求(如果對方不在同一區(qū)內(nèi),還要撥對方區(qū)號,相稱于給出網(wǎng)絡(luò)地址)。如果對方在場并空閑(相稱于通信的另一主機(jī)開機(jī)且能夠接受連接請求),拿起電話話筒,雙方就能夠正式通話,相稱于連接成功。雙方通話的過程,是一方向電話機(jī)發(fā)出信號和對方從電話機(jī)接受信號的過程,相稱于向Socket發(fā)送數(shù)據(jù)和從socket接受數(shù)據(jù)。通話結(jié)束后,一方掛起電話機(jī)相稱于關(guān)閉Socket,撤銷連接。在電話系統(tǒng)中,普通顧客只能感受到本地電話機(jī)和對方電話號碼的存在,建立通話的過程,話音傳輸?shù)倪^程以及整個電話系統(tǒng)的技術(shù)細(xì)節(jié)對他都是透明的,這也與Socket機(jī)制非常相似。Socket運用網(wǎng)間網(wǎng)通信設(shè)施實現(xiàn)進(jìn)程通信,但它對通信設(shè)施的細(xì)節(jié)毫不關(guān)心,只要通信設(shè)施能提供足夠的通信能力,它就滿足了。抽象出來,Socket實質(zhì)上提供了進(jìn)程通信的端點。進(jìn)程通信之前,雙方首先必須各自創(chuàng)立一種端點,否則是沒有方法建立聯(lián)系并互相通信的。正如打電話之前,雙方必須各自擁有一臺電話機(jī)同樣。在網(wǎng)間網(wǎng)內(nèi)部,每一種Socket用一種半有關(guān)描述:(合同,本地地址,本地端口)。一種完整的Socket有一種本地唯一的Socket號,由操作系統(tǒng)分派。最重要的是,Socket是面對客戶/服務(wù)器模型而設(shè)計的,針對客戶和服務(wù)器程序提供不同的Socket系統(tǒng)調(diào)用??蛻綦S機(jī)申請一種Socket(相稱于一種想打電話的人能夠在任何一臺入網(wǎng)電話上撥號呼喊),系統(tǒng)為之分派一種Socket號;服務(wù)器擁有全局公認(rèn)的Socket,任何客戶都能夠向它發(fā)出連接請求和信息請求(相稱于一種被呼喊的電話擁有一種呼喊方懂得的電話號碼)。Socket運用客戶/服務(wù)器模式巧妙地解決了進(jìn)程之間建立通信連接的問題。服務(wù)器Socket半有關(guān)為全局所公認(rèn)非常重要。根據(jù)傳輸數(shù)據(jù)類型的不同,Socket重要分為三類:①流式Socket(SOCK—STREAM),在這種方式下,兩個通訊的應(yīng)用程序之間要先建立一種虛擬連接,提供可靠的、面對連接的通信流,它使用TCP協(xié)議,從而確保了數(shù)據(jù)傳輸?shù)膶Φ男院陀行蛐?。②?shù)據(jù)報Socket(SOCK—DGRAM),它使用數(shù)據(jù)報合同UDP,定義了一種無連接服務(wù),數(shù)據(jù)通過互相獨立的報文進(jìn)行傳輸,是無序的,并且不確??煽?、無差錯。③原始Socket,原始套接字允許對底層合同如IP或ICMP直接訪問,它功效強(qiáng)大但使用較為不便。重要用于某些合同的開發(fā)。

Socket的通信機(jī)制圖:TCP服務(wù)器端TCP服務(wù)器端Socket()結(jié)束連接回應(yīng)數(shù)據(jù)請求數(shù)據(jù)發(fā)送連接請求Connect()TCP客戶端接受服務(wù)的返回成果Read()關(guān)閉Close()向服務(wù)器發(fā)出服務(wù)請求Write()創(chuàng)立對象Socket()Bind()結(jié)束連接回應(yīng)數(shù)據(jù)請求數(shù)據(jù)發(fā)送連接請求Connect()TCP客戶端接受服務(wù)的返回成果Read()關(guān)閉Close()向服務(wù)器發(fā)出服務(wù)請求Write()創(chuàng)立對象Socket()Bind()Listen()阻塞等待連接的建立:Accept()阻塞等待連接的建立:Accept()建立連接建立連接接受客戶端的請求消息接受客戶端的請求消息Read()解決客戶端的請求消息解決客戶端的請求消息Write()解決成果返回給客戶端解決成果返回給客戶端Read()關(guān)閉關(guān)閉Close()6.程序的設(shè)計6.1服務(wù)器的設(shè)計1.新建一種Java項目用來實現(xiàn)服務(wù)器的設(shè)計服務(wù)器主函數(shù)的創(chuàng)立,使用類TestServerSocket3023.創(chuàng)立服務(wù)器的監(jiān)聽事件,使用類ServerListener02在服務(wù)器的監(jiān)聽事件中,重要指定服務(wù)器的端標(biāo)語以及重寫父類的run函數(shù)啟動新的線程創(chuàng)立基于Socket通信的線程,使用類ChatSocket302在創(chuàng)立基于Socket通信的線程中,重要定義一種Socket變量然后在定義兩個函數(shù),一種用于解決數(shù)據(jù)的輸入。另一種用于解決數(shù)據(jù)的輸出實現(xiàn)服務(wù)器對客戶端進(jìn)行的管理,使用類ChatManager302實現(xiàn)服務(wù)器與客戶端的連通中,重要的一點就是對類進(jìn)行單例化解決,覺得不是任何人都能夠隨便創(chuàng)立這類(即服務(wù)器)的,別人只能夠連接服務(wù)器,而不能夠進(jìn)行創(chuàng)立。另外還設(shè)計的函數(shù)有添加客戶端,移除客戶端,以及對客戶端的數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā)6.2客戶端的設(shè)計首先新建一種java項目,實現(xiàn)客戶端的某些設(shè)計新建兩個包,一種用于實現(xiàn)功效,另一種用于實現(xiàn)聊天的界面設(shè)計界面的設(shè)計首先需要新建一種JFrame,命名為MainView新建框架之后需要,需要為其添加編輯框,按鈕,顯示文本等的控件,添加之后還要為其布局,布局之后顯示以下:5.添加主函數(shù),命名為TestClient3026.添加對客戶端的數(shù)據(jù)解決功效,創(chuàng)立類ChatManager302與服務(wù)器的創(chuàng)立同樣,需要對客戶端進(jìn)行單例化解決,只有本類自己能夠創(chuàng)立客戶端,別人不能夠隨便創(chuàng)立另外有對服務(wù)器發(fā)送的連接請求函數(shù)對發(fā)送按鈕的響應(yīng)函數(shù)測試及運行成果7.1服務(wù)器的測試運行服務(wù)器,查看顯示成果測試服務(wù)器綁定的端標(biāo)語(24302)。打開瀏覽器,輸入127.0.0.1:243027.2客戶端的測試運行客戶端程序,并新建客戶端客戶端連接服務(wù)器

當(dāng)點擊“擬定”后,在客戶端的顯示框中,會顯示“連接服務(wù)器的消息”創(chuàng)立多個客戶端,連接服務(wù)器進(jìn)行聊天客戶端1:

客戶端2:8.設(shè)計總結(jié)基于孫老師講的Socket的網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(C++編寫版),由于近期我始終在鉆研java編程語言,于是我就做了一種用java語言編寫的基于Socket的網(wǎng)絡(luò)聊天程序的設(shè)計。通過本次設(shè)計我又進(jìn)一步對基于Socket的網(wǎng)絡(luò)聊天有了新的理解,并且本次通過我自己獨立設(shè)計程序,編寫程序,使我對Client/

Server構(gòu)造軟件的設(shè)計有了新的認(rèn)識。對網(wǎng)絡(luò)編程有了進(jìn)一步的理解。

在設(shè)計的過程中理解到自己的知識還是比較有限,使得程序還不夠完善?;叵氡敬蜫ava程序的編寫。從理論到實踐,能夠?qū)W到諸多東西,同時不僅能夠鞏固以前學(xué)的東西,并且學(xué)到了諸多課本上學(xué)不到的東西,通過本次設(shè)計,使得自己懂得必須要把理論和實踐相結(jié)合起來,從理論中得出結(jié)論,才干真正掌握這門技術(shù),也提高了自己獨立思考的能力,在設(shè)計的過程中,能夠自己解決。真正體會到要將一門知識學(xué)到能夠自己運用,才是屬于自己的,因此我必須加強(qiáng)實踐,多練習(xí)。本次設(shè)計尚有諸多局限性與缺點,程序中尚有諸多問題需要完善。例如,服務(wù)器要統(tǒ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

提交評論