freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

cs架構(gòu)的即時聊天系統(tǒng)的設(shè)計與實現(xiàn)-wenkub.com

2025-02-28 06:02 本頁面
   

【正文】 再右擊 Client 包下的,選擇運行方式 java 應(yīng)用程序即可。實際上本系統(tǒng)并未設(shè)計得很周全,程序中的服務(wù)器端 Socket 連接的 IP 地址是寫死的。從最初的選題,到系統(tǒng)的設(shè)計和功能的實現(xiàn),馬老師一直細(xì)心地對我進(jìn)行專業(yè)地指導(dǎo)。最大的感概就是系統(tǒng)開發(fā)之前的設(shè)計是尤為重要的,這決定了系統(tǒng)開發(fā)的工程量、效率。 完成對用戶的管理,如踢用戶下線,給指定用戶發(fā)送系統(tǒng)通知等。發(fā)送方將消息寫入數(shù)據(jù)流,接收方再從數(shù)據(jù)流中讀取還原出對象即可。 文件傳送。給不在線的人也應(yīng)該能發(fā)送消息,但是對方如何接收到呢?這個問題我是這樣解決的。 成功解決的問題: 服務(wù)器端如何處理客戶端的不同請求。 本系統(tǒng)采用免費開源的 Eclipse 開發(fā), 由于時間有限,只開發(fā)了登錄、注冊、文字聊天、文件傳送、后臺管理五個模塊,通過動手編程使自己又重新回顧了 Java 語言 的相關(guān)知識,熟悉了操作平臺。然后將其轉(zhuǎn)化為數(shù)據(jù)流程圖,使自己理清了系統(tǒng)的工作思路,對于系統(tǒng)的流程有了清楚的把握。 在進(jìn)行系統(tǒng)的分析與設(shè)計中我熟悉了從現(xiàn)狀描述到系統(tǒng)建模以及系統(tǒng)實現(xiàn)的整個過程,這將自己以前在課堂上所學(xué)的基礎(chǔ)知識及課外所學(xué)的知識串連起來,綜合應(yīng)用到一個真實的系統(tǒng)中去。 圖 415 離線消息管理界面 本科畢業(yè)設(shè)計 39 第五章 總結(jié) 本次畢業(yè)設(shè)計的即時聊天系統(tǒng),主要是以學(xué)習(xí)研究為目的,所有實現(xiàn)的功能都是最基本的。每當(dāng)用戶上線時,程序單獨啟動一條線程 MsgManageThread 根據(jù)消息對象 Msg的 SendFrom 和 SendTo 屬性去檢測該用戶有沒有離線消息。 功能實現(xiàn)如圖 414 所示。 此外, 服務(wù)器運行時間是用 Timer 計時器來實現(xiàn)的。同時查詢數(shù)據(jù)庫,返回用戶信息。其實為了保證 的正常運行,騰訊在各地都有自己的代理服務(wù)器,以提供足夠的帶寬和計算能力。 ()。 FileOutputStream fop=new FileOutputStream(ff)。 ()。//設(shè)置默認(rèn)的保存文本科畢業(yè)設(shè)計 35 件名 if ((null) ==amp。 (readSignal:+readSignal)。 dis = new DataInputStream(())。 } ?接收端: TestReciever t=new TestReciever()。 } } }else{ (null, 還未選擇文件! )。 if (()) { FileInputStream fis = new FileInputStream(f)。 // 如果兩個字符串的長度相 同,并且其中的相應(yīng)字符都相等(忽略大小寫), //則認(rèn)為這兩個字符串是相等的。 // 清空此數(shù)據(jù)輸出流。使用 TestJProgressBar 對象,調(diào)用其 setStringPainted(true)方法設(shè)置進(jìn)度條的變化, 可以 顯示文件發(fā)送進(jìn)度。群公告面板 實質(zhì)是一個不可編輯的 JTextArea,通過調(diào)用 JTextArea對象的setBackground方法設(shè)置組件的背景色。 點擊好友列表界面的群組選項卡里的“進(jìn)入官方聊天室”按鈕,在這里可以實現(xiàn)消息的廣播發(fā)送。在 JTextPane 中加入了 TestJProgressBar 對象,使其成為帶有滾動條的文字顯示區(qū)域。 彈窗效果的實現(xiàn)主要是靠 3 個定時器 Timer 對象: 平滑移動的定時器,使得窗口從右下角緩慢移動到適當(dāng)?shù)奈恢?。使用?JSlider和 JList 等控件,通過調(diào)用 JList 的 setCellRenderer 方法即可改變列表項的外觀,制作出較為復(fù)雜的組件,比如加入了頭像顯示功能 。在界 面下方的消息輸入框內(nèi)輸入消息內(nèi)容,點擊發(fā)送按鈕,即將消息發(fā)送給對方。 ( + + name + + password + 本科畢業(yè)設(shè)計 29 + () + + boBox狀態(tài) .getSelectedIndex())。 String password = new String(pwd密碼 .getPassword())。在登錄界面(如圖 43)驗證通過則會進(jìn)入客戶端好友列表界面(如圖 44),否則彈出一個 MessageDialog 提示用戶名或密碼錯誤。// 頭像索引 } catch (Exception ee) { ()。 本科畢業(yè)設(shè)計 26 else { try { if (cs_TCP == null) cs_TCP=new CS_TCP(,)。 圖 42 錯誤提示界面 注冊完成后,通過 JDBC 技術(shù)連接 MySQL 數(shù)據(jù)庫將記錄插入數(shù)據(jù)庫表中。為了使系統(tǒng)的界面更加美觀且易于構(gòu)建,本系統(tǒng)使用了兩個第三方包: , 。本系統(tǒng)雖然沒有設(shè)計這么復(fù)雜的流程,但是也必須在登錄前注冊賬號。 } else { ()。 if (().equals(1)) { ClientConServerThread ccst=new ClientConServerThread(s)。 ObjectOutputStream oos = new ObjectOutputStream(())。 } } } MyClient類: public class ClientConServer { public Socket s。 本科畢業(yè)設(shè)計 23 } else { (2)。 //加入服務(wù)器端的 HashMap便于統(tǒng)一管理 ((), scct)。 ObjectOutputStream oos=new ObjectOutputStream(())。 ObjectInputStream ois=new ObjectInputStream(())。 表 4 Users類 屬性名 作用 private int id 用戶 ID,唯一識別該用戶 private String name 用戶名 private String pwd 用戶密碼 private String ip 用戶登錄機(jī)器 IP private String state 用戶在線狀態(tài) 本科畢業(yè)設(shè)計 22 private String gender 用戶性別 private String 用戶電子郵箱 private String lastLogin 用戶上一次登錄時間 private String lastExit 用戶上一次退出系統(tǒng)時間 private String headImg 用戶頭像 (3) MyServer和 MyClient類 本系統(tǒng)設(shè)計的目的便是即時聊天, MyServer類和 MyClient類便是實現(xiàn)通信功能的主干類,它是一個功能類,不是一個實體類,因此沒有封裝太多的屬性。 在本系統(tǒng)中,很明顯的可以看出,模型層即為 model包,視圖層即為 view包,控制層即為 tools包和 db包,包的名稱取法因人而異,其本質(zhì)都是反映了 MVC的思想。 (2)重用性高 MVC模式允許使用各種不同樣式的視圖來訪問同一個服務(wù)器端的代碼,因為多個視圖可以共享一個模型。它們各自處理自己的任務(wù)。 系統(tǒng)關(guān)鍵類結(jié)構(gòu)設(shè)計 本系統(tǒng)采用簡單的 MVC 設(shè)計模式,具體架構(gòu)如圖 313 所 示。備用 39。消息接收者 39。消息內(nèi)容 39。, 本科畢業(yè)設(shè)計 19 PRIMARY KEY (`U_ID`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8。, `U_TYPE` varchar(50) DEFAULT NULL COMMENT 39。, `U_SIGNATURE` varchar(100) DEFAULT NULL COMMENT 39。, `U_LAST_LOGIN` date DEFAULT NULL COMMENT 39。, `U_GENDER` varchar(50) DEFAULT NULL COMMENT 39。, `U_IP` varchar(50) DEFAULT NULL COMMENT 39。, `U_NAME` varchar(50) NOT NULL COMMENT 39。 表 2 聊天消息表 字段名 數(shù)據(jù)類型 是否是主鍵 MSG_ID int 是 MSG_CONTENT varchar(2021) 否 MSG_SENDFROM int 否 本科畢業(yè)設(shè)計 18 MSG_SENDTO int 否 MSG_TYPE varchar(2) 否 MSG_SENDTIME date 否 物理設(shè)計 數(shù)據(jù)庫最終要存儲于存儲設(shè)備上, 將一個給定邏輯結(jié)構(gòu)實施到具體的環(huán)境中時,邏輯數(shù)據(jù)模型要選取一個具體的工作環(huán)境,這個工作環(huán)境提供了數(shù)據(jù)存儲結(jié)構(gòu)與存取方法。 ( 1)用戶信息表 : 該表中記錄了本系統(tǒng)所有注冊用戶的用戶名及其 密碼,以及其它一些個人信息。每一個實體都是現(xiàn)實中實際存在的對象的抽象,并存在一定的數(shù)據(jù)關(guān)系。 服務(wù)器管理員 查找用戶 查看在線用戶 刪除用戶 查看聊天記錄 關(guān)閉服務(wù)器 圖 34后臺管理員用例圖 啟動服務(wù)器 ( 1)頂層數(shù)據(jù)流圖 聊天用戶 聊天用戶 局域網(wǎng)即時聊天系統(tǒng) 圖 35 頂層數(shù)據(jù)流圖 ( 2)客戶端數(shù)據(jù)流圖 本科畢業(yè)設(shè)計 13 登錄界面 好友列表界面 好友聊天界面 查看用戶信息 聊天室界面 連接到服務(wù)器線程 Socket 連接 圖 36 客戶端數(shù)據(jù)流圖 本科畢業(yè)設(shè)計 14 數(shù)據(jù)庫設(shè)計 數(shù)據(jù)庫需求分析 根據(jù)即時聊天系統(tǒng)的功能模塊分析可知,一個最最簡單的聊天系統(tǒng)至少應(yīng)該包括一張用戶基本檔案的數(shù)據(jù)表。本系統(tǒng)的用例圖如圖 3 34 所示。 (3)消息管理:當(dāng)一個用戶給其不在線的用戶發(fā)送消息時,系統(tǒng)會理解為發(fā)送的是離線消息。 系統(tǒng)后臺管理模塊 (1)服務(wù)管理:服務(wù)器端的 管理員可以在這里啟動后臺的服務(wù)器,發(fā)布聊天室公告或者彈窗公告給所有在線用戶。 此外還有群組聊天功能,可以在“官方聊天室”功能中實現(xiàn)一對多的聊天,即在聊天室發(fā)送的消息是面向所有在線用戶的。 實時聊天模塊 客戶端首先發(fā)送消息到服務(wù)器端,服務(wù)器端程序判斷客戶端發(fā)來的信息類型,如果是普通的聊天消息就根據(jù)發(fā)送者信息和接受者信息進(jìn)行消息轉(zhuǎn)發(fā)。服務(wù)器接收到信息后通過純 JDBC 方式或者 JDBC—ODBC 橋接的方式連接數(shù)據(jù)庫并添加記錄。 主動連 接 新建一個 Socket連接 監(jiān)聽 圖 21 Socket 客戶 服務(wù)器的通信流程圖 本科畢業(yè)設(shè)計 8 第三章 基于 C/S 架構(gòu)的即時通訊系統(tǒng)設(shè)計 3. 1 系統(tǒng)詳細(xì)設(shè)計 系統(tǒng)總體流程圖 在系統(tǒng)開發(fā)之前,先對系統(tǒng)進(jìn)行了整體設(shè)計,系統(tǒng)流程圖如圖 31。 Java 中的 Socket 通信流程如 圖 21 所示 。 針對一個特定的連接和通信過程,服務(wù)器和客戶端程序里都有一個 Socket 對象,我們可以想象一下其場景,在通信過程中,有一條虛擬的 “光纜 ”構(gòu)架在服務(wù)器和客戶端之間,光纜的兩頭都插在 了 Socket 這 “插座 ”里。另外,使用 UDP 傳輸數(shù)據(jù)時對數(shù)據(jù)是有大小限制的,每個被傳輸?shù)陌仨毾薅ㄔ?64KB 之內(nèi) [6]。由于 TCP 協(xié)議采用的是這種連接方式, 因此由它建立的連接是可靠的。通過這些協(xié)議,網(wǎng)絡(luò)通信的本科畢業(yè)設(shè)計 6 各主機(jī)可以用一種統(tǒng)一而非雜亂的規(guī)范, 高效便捷地相互發(fā)送和接收消息。本系統(tǒng)采用的后臺數(shù)據(jù)庫即為社區(qū)版 [7]。 MySQL 是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。 Eclipse 核心很小,其它所有功能都以插件的形式附加于Eclipse 核心之上。它 是一個開放源代碼的、基于Java 的可擴(kuò)展開發(fā)平臺。在全球云計算和移動互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下, Java更具備了顯著優(yōu)勢和廣闊前景 [1][8]。本系統(tǒng)不比商業(yè)系統(tǒng),沒有考慮過多的復(fù)雜性,主要實現(xiàn)了基本的通訊功能,以滿足學(xué)習(xí)研究之用。 綜上所述,這種 C/S 架構(gòu)的即時通訊系統(tǒng)的開發(fā)是可行的。無需太多的經(jīng)濟(jì)投入即 可為局域網(wǎng)內(nèi)的即時通訊系統(tǒng)的實現(xiàn)提供支持。 操作可行性:系統(tǒng)的操作方式在這個用戶組織內(nèi)是否行得通 在對本系統(tǒng)的分析中,同樣是從上面三個方面入手。為了達(dá)到這個目的,必須認(rèn)真了解用戶的要求及現(xiàn)實環(huán)境,探索若干種可供選擇的解絕方案,并對每種解決方案的可行性進(jìn)行仔細(xì)論證。 第四部分,總結(jié)與展望。 第二部分,闡述了整個系統(tǒng)的設(shè)計過程
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1