計算機網(wǎng)絡聊天室課程設計報告書_第1頁
計算機網(wǎng)絡聊天室課程設計報告書_第2頁
計算機網(wǎng)絡聊天室課程設計報告書_第3頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、計算機網(wǎng)絡課程設計報告設計題目:同組人姓名同組人學號專業(yè)班級:聊天室王巍瑾馬志超周旭201515151052015151510420151515138計科153指導教師:金松林日期:2017年6月12日一16日、題目意義和需求分析1. 題目意義即時通訊或在線聊天是目前In ternet上最為流行的通訊方式,用戶之間通過 文字傳輸信息。這是一種可以讓使用者在網(wǎng)絡上建立私人聊天室的實時通訊服 務。除了簡單的文字信息,使用者之間還可以互相發(fā)送文件、文檔、音樂、視 頻等文件。只要與服務器鏈接,無論對方在天涯海角,雙方隔得多遠都沒有問 題。消息的實時更新,拉近了我們相知的橋梁,文件的相互傳輸,使同事之間

2、 辦公更方便快捷。2. 需求分析a. 注冊當選擇注冊時,創(chuàng)建一個File文件類,載入User.txt ”,判斷用戶名是否 已經(jīng)存在,用戶名有效后寫入user.txt ”。b. 登錄去user.txt”讀取用戶數(shù)據(jù),驗證用戶名是否存在,驗證用戶密碼是否正 確,如果以上驗證全部正確,返回客戶端信息,提示登陸成功進入聊天界 面。c. 聊天所有已登錄的用戶的名稱都會在列表中顯示,然后就可以選擇其中一個或多個發(fā)起聊天。接收用戶聊天信息,當用戶發(fā)送聊天信息時,服務端將會收到客戶端用 Socket傳輸過來的聊天信息對象,然后將其轉(zhuǎn)換為Message對象,返回聊 天信息,然后系統(tǒng)從Message中提取消息類型

3、,再根據(jù)類型將消息轉(zhuǎn)化后 通過Socket轉(zhuǎn)發(fā)到相應的用戶。d. 文件傳輸在聊天的基礎上增加了一個文件傳輸功能。同事之間辦公難免有一些資料的來往,在登錄列表中選擇一個用戶或多個用戶發(fā)送文件,等對方確認接收后即可建立連接進行文件傳輸。二、設計說明聊天室總體分為三個模塊,主要包括注冊登錄,聊天模塊,文件傳輸模塊。系統(tǒng)運行在java環(huán)境中,要求java環(huán)境為JDK 1.8+ ;設計中的重點是通過Java中的ServerSocket搭建TCP服務器,通過在客戶 端創(chuàng)建 Socket套接字連接服務器,然后通過 ObjectOutputStream 來發(fā)送 Message (數(shù)據(jù)消息的封裝類)對象讓服務器

4、接受。通過線程來存儲來存儲用 戶的Socket連接狀態(tài),接受并處理用戶發(fā)過來的信息,返回處理信息??蛻魴C 也通過線程來接受服務器的處理數(shù)據(jù)做出響應。設計的難點是文件的傳輸,首先通過原有的服務器獲得目標客戶機的IP地址和端口,然后在客戶機上建立服務器,通過要發(fā)送的文件的客戶機連接接受 文件的客戶機用 DataInputStream 和DataOutputStream 來推送到輸入、輸出 流。然后客戶機接受并保存。三、系統(tǒng)詳細設計1. 功能模塊2.流程圖開始1rN開啟服務器Y打開登陸窗口注冊*N注冊成功Y結(jié)束登陸正確登陸成功聊天窗口正在傳輸Inr傳輸完成四、程序源代碼及注釋public ChatR

5、oom(Stri ng u_n ame, Socket clie nt) /賦值n ame = u_n ame;clie ntSocket = clie nt;on li nes = new Vector();setTitle( name);setResizable(false);setDefaultCloseOperatio n(JFrame.DO_NOTHING_ON_CLOSE);setBounds(200, 100, 688, 510);conten tPa ne = new JPa nel();setC onten tPa ne(c onten tPa ne);con te ntPa

6、 ne.setLayout( nu II);/聊天信息顯示區(qū)域JScrollPa ne scrollPa ne = new JScrollPa ne();scrollPane.setBounds(10, 10, 410, 300);getC on te ntPa ne().add(scrollPa ne);textArea = new JTextArea();textArea.setEditable(false);textArea.setLineWrap(true);/ 激活自動換行功能 textArea.setWrapStyleWord(true);/ 激活斷行不斷字功能 textArea.

7、setFont(new Font(sdf, Font.BOLD, 13);scrollPa ne.setViewportView(textArea);/打字區(qū)域JScrollPa ne scrollPa ne_1 = new JScrollPa ne();scrollPane_1.setBounds(10, 347, 411, 97);getC onten tPa ne().add(scrollPa ne_1);final JTextArea textArea_1 = new JTextArea();textArea_1.setLineWrap(true);/ 激活自動換行功能 textAre

8、a_1.setWrapStyleWord(true); 激活斷行不斷字功能 scrollPa ne_1.setViewportView(textArea_1);/關閉按鈕final JButton btn NewButton = new JButto n(”關閉);btnNewButton.setBounds(214, 448, 60, 30);getCo nte ntPa ne().add(bt nN ewButto n);/發(fā)送按鈕JButton btnN ewButton_1 = new JButto n(”發(fā)送);bt nN ewButton_1.setBou nds(313, 448

9、, 60, 30);getRootPa ne().setDefaultButto n(bt nN ewButton_1);getCo nte ntPa ne().add(bt nN ewButton_1);/在線客戶列表listmodel = new UUListModel(o nli nes);list = new JList(listmodel);list.setCellRe nderer( new CellRe nderer();list.setOpaque(false);Border etch = BorderFactory.createEtchedBorder(); list.set

10、Border(BorderFactory.createTitledBorder(etch,v+u_name+在線用戶:,TitledBorder.LEADING, TitledBorder.TOP, newFont(sdf, Font.ITALIC, 20), Color.black);JScrollPa ne scrollPa ne_2 = new JScrollPa ne(list);scrollPa ne_2.setBou nds(430, 10, 245, 375);scrollPa ne_2.setOpaque(false);scrollPa ne_2.getViewport().s

11、etOpaque(false);getC onten tPa ne().add(scrollPa ne_2);/文件傳輸欄progressBar = new JProgressBar();progressBar.setBou nds(430, 390, 245, 15);progressBar.setMi nim um(1);progressBar.setMaximum(100);getC onten tPa ne().add(progressBar);/文件傳輸提示lblNewLabel = new JLabel(文件傳輸信息欄:);lblNewLabel.setFont(new Font(

12、SimSun, Font.PLAIN, 12);IblNewLabel.setBackgrou nd(Color.WHITE);lblNewLabel.setBounds(430, 410, 245, 15);getCo nten tPa ne().add(lblNewLabel);newtry oos=ObjectOutputStream(clie ntSocket.getOutputStream();/記錄上線客戶的信息,并發(fā)送給服務器Message toMsg = new Message。; toMsg.setType(O);toMsg.setName( name);toMsg.setT

13、imer(getTimer();oos.writeObject(toMsg);oos.flush();/啟動客戶接收線程CThread = new Clie ntl nputThread();CThread.start(); catch (IOExceptio n e) / TODO Auto-ge nerated catch blocke.pri ntStackTrace();/發(fā)送按鈕btnN ewButt on _1.addActio nListe ner(new Actio nListe ner() public void actio nPerformed(Actio nEve nt

14、e) String info = textArea_1.getText();List to = list.getSelectedValuesList();if (to.size() set =HashSetvStri ng();set.addAII(list.getSelectedValuesList(); toMsg.setClie nts(set);sen dMessage(toMsg););五、實驗數(shù)據(jù)、結(jié)果分析1.開啟服務器服務器用來將用戶發(fā)送的信息發(fā)送到指定用戶,所以程序執(zhí)行314之前服務器一定要開啟。如圖5.1所示開MBpiiblic nid startl)(try toUH |t

15、m SHktt client .accept(;a. Problems Javadoc .: Declaratiar S Console HServer Java Application /opt/jwm/jdkl .B.D131/binava 2D1 丁年6月 Td 日上牛 1G1124)圖5.1開啟服務器2. 用戶登錄用戶可以通過輸入自己的賬號密碼來登錄聊天室,如圖5.2所示二算EM AlipUkiJll 7CPil|i VililEllL i Lili!L EQ 1 J J)Message msg = (Message) oiSrireadObjectO;flESMCfl;5ocklel

16、5nmlnnt i “fiPjiiiPi chA“df tsullnnlTnf“ti 見示*iffisg.gertTypfiO * 4)( tch叭p catchblems w Javadoc 巡 Dedaration 0 Console K:l Jav Application /opt/jvm/jdki,8.0_i ?i/binaua (201754 祐日上午 iotl2:53)圖5.2登錄窗口3. 用戶注冊當用戶第一次登錄時,可以通過自己注冊一個賬號來進入聊天室。如圖5.3所示。if (msg.DpticKionPane.IJVFDfiWirilcatchSocket new Cdispo

17、 b rakelseJDptii (IOExcepts printStackT catch (ClassNote,printStackT返回注冊圖5.3用戶注冊4.多用戶登錄當有用戶上線時服務器會向所有在線用戶發(fā)送用戶上線通知。如圖 5.4、5.5所示。班FOR相 TENFRHOfl_ffFSSAfiF).?ms gJava Applh圖5.4用戶上線5.5多用戶上線5.聊天用戶可以通過選中在線用戶列表中的用戶,向選中用戶發(fā)送消息,可以選擇一個或多個用戶發(fā)送消息。如圖5.6所示。aB ItHfJ*H- 也id丄 th KWf y, x, 4H.- HM-K A lutl 2. 3. IH時5

18、“Hkfcb 1- d-k L KIN K3 B- lik 1. KJK-袈5務:嗎Z :圖5.6聊天功能展示6.發(fā)送文件首先用戶選擇要發(fā)送文件的一個或多個用戶,然后在用戶列表雙擊,彈出 選擇文件框選取文件(如圖5.7所示),待接收方同意接受并選擇好保存位置后 開始發(fā)送(如圖5.8、5.9所示),直至發(fā)送完成(如圖5.10所示)。b MH二鬻站f.工 aII. * I K. X .J” V H EHL I. 圖5.75號向2、3、4號發(fā)送文件帚站 HBOS, WUT圖5.8等待接收方確認訓n勺祥鬥協(xié)證0方0V圖5.9文件傳輸圖5.10傳輸完畢六、總結(jié)這次我們所設計的課題是個聊天室,網(wǎng)絡聊天已經(jīng)成為人與人之間交流的一種方式,它能把復雜的事情簡單化。伴隨著互聯(lián)網(wǎng)的發(fā)展,日常交流變得越 來越重要,同時人們更親睞實時溝通方式,于是在線聊天室應運而生。通過這次實習,讓我們對網(wǎng)絡的理解更加深刻,對編程的思路也更加清 晰。在這次實習中,我們遇到了很多問題,比如如何通過代碼將網(wǎng)絡中的 TCP 連接寫出來,如何傳輸數(shù)據(jù)等同時我們在代碼也出現(xiàn)了許多錯誤,如10錯誤,Socket連接錯誤

溫馨提示

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

評論

0/150

提交評論