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

下載本文檔

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

文檔簡介

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

2、(10分)表情/圖片/用戶頭像(10分) (10分)用戶狀態(tài)(隱身、忙碌、Q我吧 ) (10分)消息漫游或離線消息 (10分)離線文件 (20分)用戶分組管理(建群/群聊/群文件共享) (10分)服務器端踢人 跟老師協(xié)商后也可實現(xiàn)其它功能,并獲得加分目錄 題目要求 技術架構 最基礎的實例 網絡協(xié)議設計 客戶端設計 服務器設計技術架構 系統(tǒng)采用C/S結構 聊天信息、用戶狀態(tài)信息通過服務器轉發(fā) 文件采用P2P技術傳輸,即不需經過服務器轉發(fā),客戶端之間直接傳輸文件 開發(fā)平臺: MyEcplise 2014 或者VS.NET 2013(C#/MFC) 采用數(shù)據(jù)庫保存用戶注冊信息(要求數(shù)據(jù)庫中只保存用戶

3、名和口令的SHA-1散列值) MySQL 或者SLQ Server 采用多線程、線程池、非阻塞通信技術提高并發(fā)性能目錄 題目要求 技術架構 最基礎的實例 網絡協(xié)議設計 客戶端設計 服務器設計最基礎的實例 實現(xiàn)的功能 用戶登錄 無注冊,無口令,直接用用戶名登錄 公聊 任何在線用戶發(fā)送的消息,都會被轉發(fā)給所有其它在線用戶 在線用戶列表維護 任一用戶登錄或退出,服務器和其它在線用戶都應得到及時通知目錄 題目要求 技術架構 最基礎的實例 網絡協(xié)議設計 客戶端設計 服務器設計協(xié)議設計 為簡化設計,示例程序中應用層協(xié)議由消息構成,每種消息用一個類來實現(xiàn): 聊天消息 包括公聊消息、私聊消息、群聊消息(本示例

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

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論