


版權說明:本文檔由用戶提供并上傳,收益歸屬內(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年煤礦工人工作總結(jié)范本大全
- 第二章 有理數(shù)及其運算第4節(jié)有理數(shù)的乘方(第1課時)教學設計2024-2025學年北師大版數(shù)學七年級上冊
- 采購部人員個人工作總結(jié)范文
- 專業(yè)代理公司合同范例
- 農(nóng)業(yè)展示銷售合同范例
- 保安合同范本
- 社區(qū)衛(wèi)生服務中心安全生產(chǎn)工作總結(jié)
- 沖貸合同范本
- 租賃合同補充協(xié)議范本
- 買賣正規(guī)新版合同范例
- 2025年內(nèi)蒙古北方職業(yè)技術學院單招職業(yè)傾向性測試題庫及答案一套
- 2025年安徽水利水電職業(yè)技術學院單招職業(yè)適應性測試題庫(含答案)
- 中國瓶裝水飲用水項目投資可行性研究報告
- 《心肌缺血心電圖》課件
- 持續(xù)葡萄糖監(jiān)測臨床應用專家共識2024解讀
- 《胸部影像疾病診斷》課件
- DB33T 2157-2018 公共機構(gòu)綠色數(shù)據(jù)中心建設與運行規(guī)范
- 陜西、甘肅、青海、寧夏四省普通高中2024-2025學年學業(yè)水平選擇性考試適應性演練(含答案)
- Unit3TheworldofScience大單元教學設計-高中英語
- 2024版體育賽事票務代理合同:賽事組織者與票務代理公司之間的合作協(xié)議3篇
- 醫(yī)院陪護管理制度
評論
0/150
提交評論