版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、網(wǎng)絡(luò)聊天程序設(shè)計鐘安鳴2014.4目錄 題目要求 技術(shù)架構(gòu) 最基礎(chǔ)的實例 網(wǎng)絡(luò)協(xié)議設(shè)計 客戶端設(shè)計 服務器設(shè)計題目要求(需求分析) 必須實現(xiàn)的功能(90分) (20分)用戶注冊(用數(shù)據(jù)庫管理用戶注冊信息) (10分)用戶登錄(示例中已經(jīng)基本實現(xiàn)) 在線用戶維護(示例中已經(jīng)實現(xiàn)) 公聊(示例中已經(jīng)實現(xiàn)) (10分)私聊 (30分)文件傳輸 用進度條顯示文件傳輸進度和傳輸速度 傳輸文件的過程中可以同時聊天,兩者互不影響 文件接收方可以選擇拒絕接受文件 用長文件測試(大于100M) (20分)信息加密傳輸 基于D-H密鑰交換,采用AES算法加密;或者基于JSSE加密題目要求(需求分析) 可選的功能
2、(10分)表情/圖片/用戶頭像(10分) (10分)用戶狀態(tài)(隱身、忙碌、Q我吧 ) (10分)消息漫游或離線消息 (10分)離線文件 (20分)用戶分組管理(建群/群聊/群文件共享) (10分)服務器端踢人 跟老師協(xié)商后也可實現(xiàn)其它功能,并獲得加分目錄 題目要求 技術(shù)架構(gòu) 最基礎(chǔ)的實例 網(wǎng)絡(luò)協(xié)議設(shè)計 客戶端設(shè)計 服務器設(shè)計技術(shù)架構(gòu) 系統(tǒng)采用C/S結(jié)構(gòu) 聊天信息、用戶狀態(tài)信息通過服務器轉(zhuǎn)發(fā) 文件采用P2P技術(shù)傳輸,即不需經(jīng)過服務器轉(zhuǎn)發(fā),客戶端之間直接傳輸文件 開發(fā)平臺: MyEcplise 2014 或者VS.NET 2013(C#/MFC) 采用數(shù)據(jù)庫保存用戶注冊信息(要求數(shù)據(jù)庫中只保存用戶
3、名和口令的SHA-1散列值) MySQL 或者SLQ Server 采用多線程、線程池、非阻塞通信技術(shù)提高并發(fā)性能目錄 題目要求 技術(shù)架構(gòu) 最基礎(chǔ)的實例 網(wǎng)絡(luò)協(xié)議設(shè)計 客戶端設(shè)計 服務器設(shè)計最基礎(chǔ)的實例 實現(xiàn)的功能 用戶登錄 無注冊,無口令,直接用用戶名登錄 公聊 任何在線用戶發(fā)送的消息,都會被轉(zhuǎn)發(fā)給所有其它在線用戶 在線用戶列表維護 任一用戶登錄或退出,服務器和其它在線用戶都應得到及時通知目錄 題目要求 技術(shù)架構(gòu) 最基礎(chǔ)的實例 網(wǎng)絡(luò)協(xié)議設(shè)計 客戶端設(shè)計 服務器設(shè)計協(xié)議設(shè)計 為簡化設(shè)計,示例程序中應用層協(xié)議由消息構(gòu)成,每種消息用一個類來實現(xiàn): 聊天消息 包括公聊消息、私聊消息、群聊消息(本示例
4、未實現(xiàn)) 用戶狀態(tài)消息 包括用戶上線消息、用戶在線消息、用戶下線消息 文件消息 文件發(fā)送方和文件接受方用來交換信息的消息(本示例未實現(xiàn))協(xié)議設(shè)計 公聊消息 作用:公聊,將聊天信息廣播給所有在線用戶 通信方:用戶-服務器,服務器-其它在線用戶協(xié)議設(shè)計 用戶上線消息 作用:新用戶登錄時,通知服務器和其它在線用戶 通信方:新上線用戶-服務器,服務器-其它在線用戶協(xié)議設(shè)計 用戶在線消息 作用:當新上線用戶登錄時,由服務器把當前在線的用戶發(fā)給新登錄的用戶 通信方:服務器-新登錄用戶協(xié)議設(shè)計 用戶下線消息 作用:用戶下線時,通知服務器和其它在線用戶 通信方:下線用戶-服務器,服務器-其它在線用戶協(xié)議設(shè)計目
5、錄 題目要求 技術(shù)架構(gòu) 最基礎(chǔ)的實例 網(wǎng)絡(luò)協(xié)議設(shè)計 客戶端設(shè)計 服務器設(shè)計客戶端界面設(shè)計控件類型:JTextPane名稱:textPaneMsgRecord控件類型:JList名稱:listOnlineUsers控件類型:JButton名稱:btnLogon控件類型:JButton名稱:btnSendMsg控件類型:JTextField名稱:textFieldMsgToSend控件類型:JTextField名稱:textFieldUserName控件類型:JPasswordField名稱:passwordFieldPwd控件類型:JButton名稱:btnSendFile客戶端代碼設(shè)計 客戶端
6、代碼由兩個類構(gòu)成 Client類是GUI類,負責與用戶交互 在Client類內(nèi)部,用一個內(nèi)部Runnable類來實現(xiàn)“后臺監(jiān)聽線程”,監(jiān)聽并處理服務器傳來的信息,類名為ListenHandler 客戶端成功登錄服務器后,就啟動客戶端的“后臺監(jiān)聽線程”客戶端功能設(shè)計 客戶端程序啟動 將發(fā)送文件按鈕設(shè)為不可用狀態(tài) 將發(fā)送消息按鈕設(shè)為不可用狀態(tài)客戶端功能設(shè)計 用戶單擊“登錄”按鈕 如果“用戶名”文本框為空,什么也不做否則 與服務器端建立Socket連接,如果拋出異常,則彈出對話框通知用戶,并結(jié)束 向服務器發(fā)送用戶上線信息,將自己的用戶名和IP地址發(fā)送給服務器 在“消息記錄”文本框中用紅色添加“登錄成
7、功”以及登錄時間 將“發(fā)送消息”和“發(fā)送文件”按鈕置為可用狀態(tài) 創(chuàng)建并啟動“后臺監(jiān)聽線程”,監(jiān)聽并處理服務器傳來的信息 將“登錄”按鈕設(shè)為“退出”按鈕客戶端功能設(shè)計 用戶單擊了“發(fā)送”按鈕 如果消息文本框內(nèi)容非空,將消息文本框中的內(nèi)容作為公聊消息發(fā)送給服務器 在“消息記錄”文本框中用藍色顯示發(fā)送的消息及發(fā)送時間客戶端功能設(shè)計 “后臺監(jiān)聽線程”收到了服務器轉(zhuǎn)發(fā)來的用戶上線消息 用綠色文字將用戶名和用戶上線時間添加到“消息記錄”文本框中 在“在線用戶”列表中增加新上線的用戶名 “后臺監(jiān)聽線程”收到了服務器轉(zhuǎn)發(fā)來的用戶在線消息 在“在線用戶”列表中增加在線用戶名 “后臺監(jiān)聽線程”收到了服務器轉(zhuǎn)發(fā)來的
8、公聊消息 用黑色文字將收到消息的時間、發(fā)送消息的用戶名和消息內(nèi)容添加到“消息記錄”文本框中 “后臺監(jiān)聽線程”收到了服務器轉(zhuǎn)發(fā)來的用戶下線消息 用綠色文字將用戶名和用戶下線時間添加到“消息記錄”文本框中 在“在線用戶”列表中刪除下線的用戶名客戶端功能設(shè)計 用戶單擊了“退出”按鈕 彈出對話框詢問用戶是否真想退出,如果是,則向服務器發(fā)送用戶下線消息并退出程序目錄 題目要求 技術(shù)架構(gòu) 最基礎(chǔ)的實例 網(wǎng)絡(luò)協(xié)議設(shè)計 客戶端設(shè)計 服務器設(shè)計服務器端界面設(shè)計控件類型:JTextPane名稱:textPaneMsgRecord控件類型:JTable名稱:tableOnlineUsers控件類型:JButton名
9、稱:btnStart服務器的代碼設(shè)計 服務器代碼由主要由五個類構(gòu)成 Server類是GUI類,負責與用戶交互 在Server類內(nèi)部,用一個匿名內(nèi)部Thread類來實現(xiàn)“接受用戶連接線程”,接受并處理客戶端連接請求 在Server類內(nèi)部,用一個內(nèi)部Runnable類來實現(xiàn)“用戶服務線程”,類名為UserHandler 每一個新用戶登錄服務器,服務器就為其創(chuàng)建一個“用戶服務線程” UserManager類用來管理在線用戶 User類對應一個在線用戶服務器功能設(shè)計 用戶單擊了“啟動”按鈕 創(chuàng)建ServerSocket打開端口9999監(jiān)聽客戶端連接 在“消息記錄”文本框中用紅色顯示“服務器啟動成功”和
10、啟動時間信息 創(chuàng)建并啟動“接受用戶連接線程”,接受并處理客戶端連接請求 將“啟動”按鈕置為不可用狀態(tài)服務器功能設(shè)計 “接受用戶連接線程”收到了客戶端發(fā)來的Socket連接請求 調(diào)用serverSocket.accept()方法接受用戶連接請求 為新來的用戶創(chuàng)建并啟動“用戶服務線程”,并把serverSocket.accept()方法返回的socket對象交給“用戶服務線程”來處理服務器功能設(shè)計 “用戶服務線程”收到客戶端發(fā)來的用戶上線消息 向新上線的用戶轉(zhuǎn)發(fā)當前在線用戶消息列表 向所有其它在線用戶發(fā)送用戶上線消息 用綠色文字將用戶名和用戶上線時間添加到“消息記錄”文本框中 將用戶信息加入到“在
11、線用戶”列表中 “用戶服務線程”收到客戶端發(fā)來的公聊消息 用黑色文字將收到消息的時間、發(fā)送消息的用戶名和消息內(nèi)容添加到“消息記錄”文本框中 將消息轉(zhuǎn)發(fā)給所有其它在線用戶 “用戶服務線程”收到客戶端發(fā)來的用戶下線消息 用綠色字在“消息記錄”文本框中顯示用戶下線消息及下線時間 在“在線用戶列表”中刪除下線用戶 將用戶下線消息轉(zhuǎn)發(fā)給所有其它在線用戶示例程序中待完善的地方 關(guān)閉服務器 出錯處理 同一用戶名多次登錄,服務器應向客戶端返回錯誤代碼 未登錄用戶向服務器發(fā)送了公聊消息,服務器應向客戶端返回錯誤代碼 未登錄用戶向服務器發(fā)送了下線消息,服務器應向客戶端返回錯誤代碼 協(xié)議消息格式有誤時,應該通知消息
12、發(fā)送者 考慮到斷網(wǎng)等問題,在線用戶列表應該是定期刷新的 在所有用到socket讀寫的trycatch塊的finnally子句中關(guān)閉socket 可使用更有效的技術(shù)框架(JSON、XML、Protobuf)來傳遞協(xié)議消息建議 設(shè)計遠比編碼重要 設(shè)計過程中要用文字記錄記錄設(shè)計思想,并寫在實驗報告中,包括功能設(shè)計、協(xié)議設(shè)計、界面設(shè)計、類設(shè)計、流程設(shè)計 程序是調(diào)試出來的,不是編出來的! 大學里不熬夜做不好課程設(shè)計!文件傳輸設(shè)計 文件發(fā)送的基本流程(Alice-Bob) Alice開啟“文件發(fā)送線程”,向Bob發(fā)送“文件發(fā)送請求消息”,此消息由服務器轉(zhuǎn)發(fā)給Bob “文件發(fā)送請求消息”中包含Alice的用戶名,Bob的用戶名,文件對應的File對象等信息 Bob收到“文件發(fā)送請求消息”后,開啟“文件接收處理線程”,向Alice發(fā)送“文件發(fā)送響應消息”,此消息亦由服務器轉(zhuǎn)發(fā)給Alice 如果Bob同意接收文件, 就向Alice發(fā)送同意接收文件的“文件發(fā)送響應消息”,并在用ServerSocket打開一個本機端口,并通過“文件發(fā)送響應
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版電力工程設(shè)計咨詢合同2篇
- 二零二五年度高新技術(shù)企業(yè)承包商擔保合同3篇
- 二零二五版戶外用品促銷員活動策劃合同2篇
- 二零二五年度酒店前臺正規(guī)雇傭合同范本(含勞動合同變更及續(xù)簽規(guī)則)3篇
- 二零二五版港口安全評價與安全管理合同3篇
- 二零二五版環(huán)保工程保險合同3篇
- 二零二五版外資企業(yè)往來借款稅務籌劃合同3篇
- 二零二五年財務顧問企業(yè)財務管理咨詢合同3篇
- 二零二五版智能家居產(chǎn)品銷售安裝合同2篇
- 二零二五年度鋼筋行業(yè)購銷合同規(guī)范范本5篇
- 2023年某保險公司春節(jié)經(jīng)營教材
- 劉都才-南方水稻田雜草發(fā)生動態(tài)及防控技術(shù)
- 全自動化學發(fā)光分析儀操作規(guī)程
- 北侖區(qū)建筑工程質(zhì)量監(jiān)督站監(jiān)督告知書
- 深藍的故事(全3冊)
- GB/T 42461-2023信息安全技術(shù)網(wǎng)絡(luò)安全服務成本度量指南
- 職校開學第一課班會PPT
- 央國企信創(chuàng)白皮書 -基于信創(chuàng)體系的數(shù)字化轉(zhuǎn)型
- GB/T 36964-2018軟件工程軟件開發(fā)成本度量規(guī)范
- 6第六章 社會契約論.電子教案教學課件
- 機加車間各崗位績效考核方案
評論
0/150
提交評論