網(wǎng)絡(luò)聊天程序_第1頁
網(wǎng)絡(luò)聊天程序_第2頁
網(wǎng)絡(luò)聊天程序_第3頁
網(wǎng)絡(luò)聊天程序_第4頁
網(wǎng)絡(luò)聊天程序_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、網(wǎng)絡(luò)聊天程序設(shè)計鐘安鳴2014.4目錄 題目要求 技術(shù)架構(gòu) 最基礎(chǔ)的實例 網(wǎng)絡(luò)協(xié)議設(shè)計 客戶端設(shè)計 服務(wù)器設(shè)計題目要求(需求分析) 必須實現(xiàn)的功能(90分) (20分)用戶注冊(用數(shù)據(jù)庫管理用戶注冊信息) (10分)用戶登錄(示例中已經(jīng)基本實現(xiàn)) 在線用戶維護(hù)(示例中已經(jīng)實現(xiàn)) 公聊(示例中已經(jīng)實現(xiàn)) (10分)私聊 (30分)文件傳輸 用進(jìn)度條顯示文件傳輸進(jìn)度和傳輸速度 傳輸文件的過程中可以同時聊天,兩者互不影響 文件接收方可以選擇拒絕接受文件 用長文件測試(大于100M) (20分)信息加密傳輸 基于D-H密鑰交換,采用AES算法加密;或者基于JSSE加密題目要求(需求分析) 可選的功能

2、(10分)表情/圖片/用戶頭像(10分) (10分)用戶狀態(tài)(隱身、忙碌、Q我吧 ) (10分)消息漫游或離線消息 (10分)離線文件 (20分)用戶分組管理(建群/群聊/群文件共享) (10分)服務(wù)器端踢人 跟老師協(xié)商后也可實現(xiàn)其它功能,并獲得加分目錄 題目要求 技術(shù)架構(gòu) 最基礎(chǔ)的實例 網(wǎng)絡(luò)協(xié)議設(shè)計 客戶端設(shè)計 服務(wù)器設(shè)計技術(shù)架構(gòu) 系統(tǒng)采用C/S結(jié)構(gòu) 聊天信息、用戶狀態(tài)信息通過服務(wù)器轉(zhuǎn)發(fā) 文件采用P2P技術(shù)傳輸,即不需經(jīng)過服務(wù)器轉(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è)計 服務(wù)器設(shè)計最基礎(chǔ)的實例 實現(xiàn)的功能 用戶登錄 無注冊,無口令,直接用用戶名登錄 公聊 任何在線用戶發(fā)送的消息,都會被轉(zhuǎn)發(fā)給所有其它在線用戶 在線用戶列表維護(hù) 任一用戶登錄或退出,服務(wù)器和其它在線用戶都應(yīng)得到及時通知目錄 題目要求 技術(shù)架構(gòu) 最基礎(chǔ)的實例 網(wǎng)絡(luò)協(xié)議設(shè)計 客戶端設(shè)計 服務(wù)器設(shè)計協(xié)議設(shè)計 為簡化設(shè)計,示例程序中應(yīng)用層協(xié)議由消息構(gòu)成,每種消息用一個類來實現(xiàn): 聊天消息 包括公聊消息、私聊消息、群聊消息(本示例

4、未實現(xiàn)) 用戶狀態(tài)消息 包括用戶上線消息、用戶在線消息、用戶下線消息 文件消息 文件發(fā)送方和文件接受方用來交換信息的消息(本示例未實現(xiàn))協(xié)議設(shè)計 公聊消息 作用:公聊,將聊天信息廣播給所有在線用戶 通信方:用戶-服務(wù)器,服務(wù)器-其它在線用戶協(xié)議設(shè)計 用戶上線消息 作用:新用戶登錄時,通知服務(wù)器和其它在線用戶 通信方:新上線用戶-服務(wù)器,服務(wù)器-其它在線用戶協(xié)議設(shè)計 用戶在線消息 作用:當(dāng)新上線用戶登錄時,由服務(wù)器把當(dāng)前在線的用戶發(fā)給新登錄的用戶 通信方:服務(wù)器-新登錄用戶協(xié)議設(shè)計 用戶下線消息 作用:用戶下線時,通知服務(wù)器和其它在線用戶 通信方:下線用戶-服務(wù)器,服務(wù)器-其它在線用戶協(xié)議設(shè)計目

5、錄 題目要求 技術(shù)架構(gòu) 最基礎(chǔ)的實例 網(wǎng)絡(luò)協(xié)議設(shè)計 客戶端設(shè)計 服務(wù)器設(shè)計客戶端界面設(shè)計控件類型:JTextPane名稱:textPaneMsgRecord控件類型:JList名稱:listOnlineUsers控件類型:JButton名稱:btnLogon控件類型:JButton名稱:btnSendMsg控件類型:JTextField名稱:textFieldMsgToSend控件類型:JTextField名稱:textFieldUserName控件類型:JPasswordField名稱:passwordFieldPwd控件類型:JButton名稱:btnSendFile客戶端代碼設(shè)計 客戶端

6、代碼由兩個類構(gòu)成 Client類是GUI類,負(fù)責(zé)與用戶交互 在Client類內(nèi)部,用一個內(nèi)部Runnable類來實現(xiàn)“后臺監(jiān)聽線程”,監(jiān)聽并處理服務(wù)器傳來的信息,類名為ListenHandler 客戶端成功登錄服務(wù)器后,就啟動客戶端的“后臺監(jiān)聽線程”客戶端功能設(shè)計 客戶端程序啟動 將發(fā)送文件按鈕設(shè)為不可用狀態(tài) 將發(fā)送消息按鈕設(shè)為不可用狀態(tài)客戶端功能設(shè)計 用戶單擊“登錄”按鈕 如果“用戶名”文本框為空,什么也不做否則 與服務(wù)器端建立Socket連接,如果拋出異常,則彈出對話框通知用戶,并結(jié)束 向服務(wù)器發(fā)送用戶上線信息,將自己的用戶名和IP地址發(fā)送給服務(wù)器 在“消息記錄”文本框中用紅色添加“登錄成

7、功”以及登錄時間 將“發(fā)送消息”和“發(fā)送文件”按鈕置為可用狀態(tài) 創(chuàng)建并啟動“后臺監(jiān)聽線程”,監(jiān)聽并處理服務(wù)器傳來的信息 將“登錄”按鈕設(shè)為“退出”按鈕客戶端功能設(shè)計 用戶單擊了“發(fā)送”按鈕 如果消息文本框內(nèi)容非空,將消息文本框中的內(nèi)容作為公聊消息發(fā)送給服務(wù)器 在“消息記錄”文本框中用藍(lán)色顯示發(fā)送的消息及發(fā)送時間客戶端功能設(shè)計 “后臺監(jiān)聽線程”收到了服務(wù)器轉(zhuǎn)發(fā)來的用戶上線消息 用綠色文字將用戶名和用戶上線時間添加到“消息記錄”文本框中 在“在線用戶”列表中增加新上線的用戶名 “后臺監(jiān)聽線程”收到了服務(wù)器轉(zhuǎn)發(fā)來的用戶在線消息 在“在線用戶”列表中增加在線用戶名 “后臺監(jiān)聽線程”收到了服務(wù)器轉(zhuǎn)發(fā)來的

8、公聊消息 用黑色文字將收到消息的時間、發(fā)送消息的用戶名和消息內(nèi)容添加到“消息記錄”文本框中 “后臺監(jiān)聽線程”收到了服務(wù)器轉(zhuǎn)發(fā)來的用戶下線消息 用綠色文字將用戶名和用戶下線時間添加到“消息記錄”文本框中 在“在線用戶”列表中刪除下線的用戶名客戶端功能設(shè)計 用戶單擊了“退出”按鈕 彈出對話框詢問用戶是否真想退出,如果是,則向服務(wù)器發(fā)送用戶下線消息并退出程序目錄 題目要求 技術(shù)架構(gòu) 最基礎(chǔ)的實例 網(wǎng)絡(luò)協(xié)議設(shè)計 客戶端設(shè)計 服務(wù)器設(shè)計服務(wù)器端界面設(shè)計控件類型:JTextPane名稱:textPaneMsgRecord控件類型:JTable名稱:tableOnlineUsers控件類型:JButton名

9、稱:btnStart服務(wù)器的代碼設(shè)計 服務(wù)器代碼由主要由五個類構(gòu)成 Server類是GUI類,負(fù)責(zé)與用戶交互 在Server類內(nèi)部,用一個匿名內(nèi)部Thread類來實現(xiàn)“接受用戶連接線程”,接受并處理客戶端連接請求 在Server類內(nèi)部,用一個內(nèi)部Runnable類來實現(xiàn)“用戶服務(wù)線程”,類名為UserHandler 每一個新用戶登錄服務(wù)器,服務(wù)器就為其創(chuàng)建一個“用戶服務(wù)線程” UserManager類用來管理在線用戶 User類對應(yīng)一個在線用戶服務(wù)器功能設(shè)計 用戶單擊了“啟動”按鈕 創(chuàng)建ServerSocket打開端口9999監(jiān)聽客戶端連接 在“消息記錄”文本框中用紅色顯示“服務(wù)器啟動成功”和

10、啟動時間信息 創(chuàng)建并啟動“接受用戶連接線程”,接受并處理客戶端連接請求 將“啟動”按鈕置為不可用狀態(tài)服務(wù)器功能設(shè)計 “接受用戶連接線程”收到了客戶端發(fā)來的Socket連接請求 調(diào)用serverSocket.accept()方法接受用戶連接請求 為新來的用戶創(chuàng)建并啟動“用戶服務(wù)線程”,并把serverSocket.accept()方法返回的socket對象交給“用戶服務(wù)線程”來處理服務(wù)器功能設(shè)計 “用戶服務(wù)線程”收到客戶端發(fā)來的用戶上線消息 向新上線的用戶轉(zhuǎn)發(fā)當(dāng)前在線用戶消息列表 向所有其它在線用戶發(fā)送用戶上線消息 用綠色文字將用戶名和用戶上線時間添加到“消息記錄”文本框中 將用戶信息加入到“在

11、線用戶”列表中 “用戶服務(wù)線程”收到客戶端發(fā)來的公聊消息 用黑色文字將收到消息的時間、發(fā)送消息的用戶名和消息內(nèi)容添加到“消息記錄”文本框中 將消息轉(zhuǎn)發(fā)給所有其它在線用戶 “用戶服務(wù)線程”收到客戶端發(fā)來的用戶下線消息 用綠色字在“消息記錄”文本框中顯示用戶下線消息及下線時間 在“在線用戶列表”中刪除下線用戶 將用戶下線消息轉(zhuǎn)發(fā)給所有其它在線用戶示例程序中待完善的地方 關(guān)閉服務(wù)器 出錯處理 同一用戶名多次登錄,服務(wù)器應(yīng)向客戶端返回錯誤代碼 未登錄用戶向服務(wù)器發(fā)送了公聊消息,服務(wù)器應(yīng)向客戶端返回錯誤代碼 未登錄用戶向服務(wù)器發(fā)送了下線消息,服務(wù)器應(yīng)向客戶端返回錯誤代碼 協(xié)議消息格式有誤時,應(yīng)該通知消息

12、發(fā)送者 考慮到斷網(wǎng)等問題,在線用戶列表應(yīng)該是定期刷新的 在所有用到socket讀寫的trycatch塊的finnally子句中關(guān)閉socket 可使用更有效的技術(shù)框架(JSON、XML、Protobuf)來傳遞協(xié)議消息建議 設(shè)計遠(yuǎn)比編碼重要 設(shè)計過程中要用文字記錄記錄設(shè)計思想,并寫在實驗報告中,包括功能設(shè)計、協(xié)議設(shè)計、界面設(shè)計、類設(shè)計、流程設(shè)計 程序是調(diào)試出來的,不是編出來的! 大學(xué)里不熬夜做不好課程設(shè)計!文件傳輸設(shè)計 文件發(fā)送的基本流程(Alice-Bob) Alice開啟“文件發(fā)送線程”,向Bob發(fā)送“文件發(fā)送請求消息”,此消息由服務(wù)器轉(zhuǎn)發(fā)給Bob “文件發(fā)送請求消息”中包含Alice的用戶名,Bob的用戶名,文件對應(yīng)的File對象等信息 Bob收到“文件發(fā)送請求消息”后,開啟“文件接收處理線程”,向Alice發(fā)送“文件發(fā)送響應(yīng)消息”,此消息亦由服務(wù)器轉(zhuǎn)發(fā)給Alice 如果Bob同意接收文件, 就向Alice發(fā)送同意接收文件的“文件發(fā)送響應(yīng)消息”,并在用ServerSocket打開一個本機(jī)端口,并通過“文件發(fā)送響應(yī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

提交評論