![java實(shí)現(xiàn)聊天系統(tǒng)計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/9/5f915f0b-c409-45de-8599-5c0d4630d57a/5f915f0b-c409-45de-8599-5c0d4630d57a1.gif)
![java實(shí)現(xiàn)聊天系統(tǒng)計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/9/5f915f0b-c409-45de-8599-5c0d4630d57a/5f915f0b-c409-45de-8599-5c0d4630d57a2.gif)
![java實(shí)現(xiàn)聊天系統(tǒng)計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/9/5f915f0b-c409-45de-8599-5c0d4630d57a/5f915f0b-c409-45de-8599-5c0d4630d57a3.gif)
![java實(shí)現(xiàn)聊天系統(tǒng)計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/9/5f915f0b-c409-45de-8599-5c0d4630d57a/5f915f0b-c409-45de-8599-5c0d4630d57a4.gif)
![java實(shí)現(xiàn)聊天系統(tǒng)計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/9/5f915f0b-c409-45de-8599-5c0d4630d57a/5f915f0b-c409-45de-8599-5c0d4630d57a5.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告學(xué)生姓名學(xué)號(hào)班級(jí)指導(dǎo)教師設(shè)計(jì)時(shí)間目錄第一章系統(tǒng)描述設(shè)計(jì)目的 3系統(tǒng)設(shè)計(jì)任務(wù)3系統(tǒng)設(shè)計(jì)分析 3系統(tǒng)功能分析4第二章功能模塊結(jié)構(gòu)模塊劃分 5模塊結(jié)構(gòu)圖 5模塊功能 5第三章模塊算法實(shí)現(xiàn)服務(wù)器實(shí)現(xiàn) 6客戶(hù)端實(shí)現(xiàn) 9第四章運(yùn)行結(jié)果 13第五章課程設(shè)計(jì)總結(jié) 17第六章附錄參考文獻(xiàn) 19源代碼 19第一章系統(tǒng)描述設(shè)計(jì)目的1 .學(xué)習(xí)網(wǎng)絡(luò)編程的知識(shí),掌握網(wǎng)絡(luò)編程的方法。2 .進(jìn)一步掌握編程思想與編程技巧,做到模塊化程序設(shè)計(jì),3 .強(qiáng)化語(yǔ)言學(xué)習(xí),尤其是Java的圖形界面與多線(xiàn)程,需反復(fù)練習(xí),熟練掌握。系統(tǒng)設(shè)計(jì)任務(wù)聊天室軟件的設(shè)計(jì)與開(kāi)發(fā):基本要求可以完成群聊、私人聊天,實(shí)時(shí)發(fā)送和顯示聊天信息
2、,完成好 友列表;進(jìn)一步要求帶表情,附件發(fā)送,聊天信息的加密傳送,設(shè)置黑名單等。學(xué)習(xí)通信編程 Socket接口編程,使用TCP或UDP接口完成信息傳送,利用多線(xiàn)程技術(shù)實(shí)現(xiàn)服務(wù)器端的多個(gè)TCP連接的建立。系統(tǒng)設(shè)計(jì)分析一.實(shí)現(xiàn)網(wǎng)絡(luò)聊天室編程,關(guān)鍵在于Socket通信,程序的功能都是在Socket的基礎(chǔ)上一層一層增加的。實(shí)現(xiàn) Socket通信的基本方法為以下4個(gè)步驟。(1) 在客戶(hù)端與服務(wù)器端創(chuàng)建相應(yīng)的ServerSockot/Socket實(shí)例。(2) 打開(kāi)連接到Socket的輸入輸出流(3) 利用輸入輸出流,按照一定的協(xié)議(TCP協(xié)議)對(duì)Socket進(jìn)行讀寫(xiě)操作(4) 關(guān)閉輸入輸出流和Socket
3、我們要實(shí)現(xiàn)的功能都是在第3步對(duì)Socket的輸入輸出流做相應(yīng)的操作戶(hù)服務(wù),主線(xiàn)程只負(fù)責(zé)循環(huán)等待,處理線(xiàn)程負(fù)責(zé)網(wǎng)絡(luò)連接,接受客戶(hù)輸入的信息,再做相應(yīng)的處理。系統(tǒng)功能分析本系統(tǒng)可以通過(guò)網(wǎng)絡(luò)進(jìn)行聊天,采用客戶(hù)端服務(wù)器模式,所以程序簡(jiǎn)介清晰易懂,而且用戶(hù)都 是在客戶(hù)端進(jìn)行活動(dòng),方便對(duì)用戶(hù)的管理,也使得程序運(yùn)行與差錯(cuò)簡(jiǎn)單起來(lái)。采用了多線(xiàn)程技術(shù), 可以做到多人同時(shí)在線(xiàn),提高了系統(tǒng)的性能,增強(qiáng)了系統(tǒng)的實(shí)用性。有簡(jiǎn)單的客戶(hù)端界面,方便用 戶(hù)使用。采用的是 TCP協(xié)議,這是可靠的,穩(wěn)定的協(xié)議,這樣不會(huì)丟失任何包,也就不會(huì)丟失任何 信息。本系統(tǒng)實(shí)現(xiàn)的功能有:1 .用戶(hù)名字登錄2 .用戶(hù)之間的群聊3 .用戶(hù)之間的私
4、聊4 .動(dòng)態(tài)刷新并顯示好友列表5 .顯示在線(xiàn)人數(shù)6 .服務(wù)器可以顯示用戶(hù)在線(xiàn)狀態(tài)7 .能夠退出處理8 .用戶(hù)上下線(xiàn)提醒第二章功能模塊結(jié)構(gòu)模塊劃分服務(wù)器:Server 類(lèi)模塊,ServerHanderson 模塊,sendallclient 模塊,sendclientlist 模塊客戶(hù)端:Client類(lèi)模塊,ServiceFrame窗口界面模塊服務(wù)器:1. Server類(lèi)模塊:與客戶(hù)端建立連接,通過(guò)套接字獲得名字,在控制端顯示提示信息2. ServerHander模塊:提供線(xiàn)程管理,實(shí)現(xiàn)多用戶(hù)的管理。針對(duì)每一個(gè)用戶(hù)發(fā)過(guò)來(lái)的消息, 進(jìn)行相應(yīng)處理,再轉(zhuǎn)發(fā)給客戶(hù)。3. Sendallclient模塊:
5、給每個(gè)用戶(hù)發(fā)送消息。4. Sendclientlist模塊:每當(dāng)有用戶(hù)上線(xiàn),更新每個(gè)用戶(hù)的用戶(hù)列表。 客戶(hù)端:1. Client類(lèi)模塊:與服務(wù)端建立連接,用戶(hù)登錄,實(shí)現(xiàn)消息的群聊,私聊,用戶(hù)列表的更新等功 能。2. ServiceFrame窗口界面模塊:客戶(hù)端窗口界面,實(shí)現(xiàn)用戶(hù)友好,方便用戶(hù)使用,在窗口上有 消息顯示,用戶(hù)列表,在線(xiàn)人數(shù)等視圖信息。第三章模塊算法實(shí)現(xiàn)服務(wù)器實(shí)現(xiàn)類(lèi)模塊:創(chuàng)建 ServerSocket,在指定端口監(jiān)聽(tīng),當(dāng)有用戶(hù)登錄,接受套接字輸入流,顯示其登錄信息,調(diào)用ServerHander線(xiàn)程進(jìn)行管理。public Server( int port) throws IOExce
6、ptionServerSocketserver= newServerSocket(port);while (true )Socketconn=();rim();務(wù)器控制臺(tái)顯示并記錄登錄,退出信息。2 .在客戶(hù)端控制臺(tái)輸入名字進(jìn)入聊天室。3 .聊天界面顯示客戶(hù)端名字,好友列表,在線(xiàn)人數(shù)等信息。4 .私聊,群聊顯示,若選擇所有人則為群聊,選擇某一個(gè)人,則為私聊。如下圖,群聊消息,在所有客戶(hù)端都顯示,私聊信息只會(huì)在發(fā)送者與接受者中顯示。5 .人數(shù)動(dòng)態(tài)刷新。第五章課程設(shè)計(jì)總結(jié)從收到題目的茫然無(wú)措,不知從何下手,到最后交出的成果,真的讓我學(xué)到了很多,可能比一 學(xué)期的JAVA和網(wǎng)絡(luò)課程設(shè)計(jì)中學(xué)到的關(guān)于TC
7、P協(xié)議的知識(shí)還要多,所以很感謝這次課程設(shè)計(jì),有效果也很有意義,某種程度上比上課效果還好。說(shuō)說(shuō)完成課程設(shè)計(jì)的整個(gè)過(guò)程吧。剛看到可以選擇的六個(gè)題目時(shí),猶如晴天霹靂,別說(shuō)用代碼 實(shí)現(xiàn)了,連題目要求都不理解,上課恍惚聽(tīng)老師提到過(guò)這個(gè)知識(shí)點(diǎn),可是重要的內(nèi)容卻一點(diǎn)也不知道, 而且,由于要做圖形界面,所以用JAVA會(huì)更簡(jiǎn)單點(diǎn),但JAVA也忘得差不多了,所以只能從頭來(lái)過(guò),剛開(kāi)始的3周,一點(diǎn)有關(guān)課程設(shè)計(jì)的代碼都沒(méi)寫(xiě),拿著一本從零開(kāi)始學(xué)JAVA把JAVA基礎(chǔ)知識(shí),尤其是關(guān)于網(wǎng)絡(luò)編程, 線(xiàn)程,圖形界面的知識(shí), 狠狠地補(bǔ)了一把, 終于更看懂一些程序結(jié)構(gòu)清晰,沒(méi)有反射,泛型等高端用法的程序了。在這過(guò)程中發(fā)現(xiàn),做一個(gè)普通
8、的網(wǎng)絡(luò)聊天室,似乎不要用太多網(wǎng)絡(luò)知識(shí),懂 得Socokt和TCP的使用即可,于是開(kāi)始慢慢敲代碼了。先把服務(wù)器與客戶(hù)端搭建起來(lái),只能實(shí)現(xiàn)連接上的作用,但什么功能都沒(méi)有,那時(shí),以為能連 接上了,那實(shí)現(xiàn)一些私聊,群聊的功能應(yīng)該很簡(jiǎn)單,但現(xiàn)實(shí)確是,只能腦中想象,真的用代碼實(shí)現(xiàn),卻 總是錯(cuò)誤百出,做的心灰意冷,尤其是私聊功能的實(shí)現(xiàn),剛開(kāi)始,想讓服務(wù)器直接向接受者與發(fā)送者發(fā) 送消息,但總是不如人意,折騰了大概一星期,才意識(shí)到TCP協(xié)議就是用自己定義的一些規(guī)則,在服務(wù)器與客戶(hù)端之間傳遞消息,可以添加關(guān)鍵字,再解析。于是才解決私聊問(wèn)題,然后添加好友列表與更新 好友的功能也在跌跌撞撞中實(shí)現(xiàn)了。窗口的布局,剛開(kāi)始
9、想用網(wǎng)格包布局,但用的很不熟練,導(dǎo)致布局 不理想,無(wú)奈,只能用最基本的布局了,所以界面看上去很普通。想發(fā)送圖片,卻發(fā)現(xiàn)文本區(qū)域根本不 能顯示圖片,能用 JEditorPane實(shí)現(xiàn),但有BUG,不知如何調(diào)試,書(shū)上,網(wǎng)上也沒(méi)找到能解決的辦法, 只能放棄了。課程設(shè)計(jì)在這種不斷學(xué)習(xí)與摸索中差不多完成了,說(shuō)說(shuō)這次課程設(shè)計(jì)的不足吧。1 .學(xué)過(guò)的知識(shí)不牢固,所以花費(fèi)了大量時(shí)間用來(lái)學(xué)習(xí)基礎(chǔ)知識(shí),那些應(yīng)該在以前就掌握的。2 .程序界面很普通,像老師說(shuō)的一樣,是最最古老的聊天系統(tǒng),沒(méi)有什么花哨。3 .沒(méi)能實(shí)現(xiàn)附加功能,像加密傳輸,文件傳送等功能。其實(shí),挺遺憾的,因?yàn)橐郧斑x修過(guò)密碼學(xué),應(yīng)該能夠?qū)崿F(xiàn)簡(jiǎn)單的DES加密的
10、。4 .沒(méi)有用到JDBC把用戶(hù)信息存儲(chǔ)到數(shù)據(jù)庫(kù)表中,實(shí)行賬號(hào)密碼登錄,提高系統(tǒng)的安全性。做了這么多的課程設(shè)計(jì),最大的體會(huì)就是用心去做,用心去學(xué),你一定能學(xué)到很多知識(shí),而且這 是對(duì)學(xué)過(guò)的知識(shí)的應(yīng)用,所以比單一的上課更有意思。對(duì)于自己能獨(dú)立的完成課程設(shè)計(jì),還是頗為滿(mǎn)意的,至少努力沒(méi)有白費(fèi),學(xué)到的知識(shí)也非常多, 最重要的應(yīng)該是理解了TCP協(xié)議的原理,并學(xué)會(huì)了簡(jiǎn)單的應(yīng)用,JAVA編程水平得到了一定的提高,面向?qū)ο蟮乃枷氡纫酝逦?。第六章附錄參考文獻(xiàn)從零開(kāi)始學(xué)JAVA王發(fā)波中國(guó)鐵道出版社Java2實(shí)用教程耿祥文清華大學(xué)出版社源代碼服務(wù)器代碼:package service;.*;.*;.*;publ
11、icclass Serverpublic Server( int port) throws IOExceptionServerSocketserver= newServerSocket(port); while (true ) Socketconn=(); *. .; *; .;import*. .;publicclass Clientpublic ServiceFrame sf ;private Socket csocket ;private DataInputStream in ;private DataOutputStream out ;publicstaticvoidmain(Stri
12、ng口args)BufferedReaderin= newBufferedReader( newInputStreamReader); "請(qǐng)輸入一個(gè)名字:"); Stringwho="" try who=().trim(); /控制臺(tái)獲得名字 catch (IOExceptione) (); newClient(who,9992); public Client(Stringwho,Stringserver,int port)sf =newServiceFrame(who+ "的客戶(hù)端"); Stringstr1= null ;(new
13、ExitListener( this ); try csocket =newSocket(server,port);in =newDataInputStream( newBufferedInputStream();out =new DataOutputStream( newBufferedOutputStream(); (who);();/名字發(fā)給服務(wù)器 while (true )str1=(); 重點(diǎn)! !,服務(wù)器端發(fā)來(lái)的消息 if ("$") /若以$結(jié)尾,則增添用戶(hù) int index=( "$");Stringstr2=(0,index); el
14、seif ("") /以吉尾為私聊信息 str1=(0,()-1);if (who)"-" +str1+ "n"); else if ("下線(xiàn)”)/用戶(hù)下線(xiàn),刪除此用戶(hù) int index=("下線(xiàn)"); Stringstr2=(0,index); "-" +str1+ "n");"在線(xiàn)人數(shù):"+動(dòng)態(tài)更新在線(xiàn)人數(shù)catch (Exceptione)"ServerError" );(); (0); protectedvoid s
15、end(Stringmsg) /發(fā)送消息給服務(wù)器的方法try (msg);();catch (Exceptione) protectedvoid close()try ();();();(); catch (IOExceptionex) class ServiceFrame extends Frame JTextArea showAT;JTextField sendFD;JComboBox friendlist ;JButton but ;JLabel showCount ;JScrollPane textAreaScrollPane ;JPanel textFieldPanel =newJP
16、anel();public ServiceFrame(Stringwinname) super (winname); /繼承父類(lèi)的名字 setSize(500,400);(newFlowLayout(0,10,10);showAT =newJTextArea(400,400);(false );textAreaScrollPane=newJScrollPane(showAT);add( textAreaScrollPane ,;add( textFieldPanel,;friendlist =newJComboBox();("所有人");(friendlist );sendFD =newJTextField(20);(sendFD);but =newJButton("發(fā)送"); ; (but ); showCount =newJLabel("在線(xiàn)人數(shù):1");(showCount );show();class ActListener implements ActionListenerClient client ;ServiceFrame sframe ;public ActListener(Cl
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年人教版(2024)九年級(jí)地理上冊(cè)月考試卷含答案
- 期貨交易質(zhì)押合同(2篇)
- 機(jī)械設(shè)備租貸合同(2篇)
- 2025年粵人版九年級(jí)生物下冊(cè)階段測(cè)試試卷含答案
- 2025年湘教版必修2歷史下冊(cè)階段測(cè)試試卷含答案
- 2025年人教A版選擇性必修1地理下冊(cè)階段測(cè)試試卷含答案
- 2025年新世紀(jì)版七年級(jí)歷史下冊(cè)月考試卷含答案
- 2025年湘教新版高三歷史下冊(cè)階段測(cè)試試卷含答案
- 2025年文學(xué)類(lèi)百科常識(shí)知識(shí)競(jìng)賽題庫(kù)及答案(共500題)
- 2025年廣西電力職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 技術(shù)服務(wù)合同-英文版模板
- 公眾聚集場(chǎng)所消防技術(shù)標(biāo)準(zhǔn)要點(diǎn)
- 社團(tuán)活動(dòng)經(jīng)費(fèi)預(yù)算申請(qǐng)表
- 經(jīng)營(yíng)范圍登記規(guī)范表述目錄(試行)(V1.0.2版)
- 2023年山東省威海市中考物理真題(附答案詳解)
- 第八講 發(fā)展全過(guò)程人民民主PPT習(xí)概論2023優(yōu)化版教學(xué)課件
- 王崧舟:學(xué)習(xí)任務(wù)群與課堂教學(xué)變革 2022版新課程標(biāo)準(zhǔn)解讀解析資料 57
- 招投標(biāo)現(xiàn)場(chǎng)項(xiàng)目經(jīng)理答辯(完整版)資料
- 運(yùn)動(dòng)競(jìng)賽學(xué)課件
- 2022年上海市初中畢業(yè)數(shù)學(xué)課程終結(jié)性評(píng)價(jià)指南
- 高考作文備考-議論文對(duì)比論證 課件14張
評(píng)論
0/150
提交評(píng)論