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

正文內(nèi)容

cs架構(gòu)的即時(shí)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(參考版)

2025-03-08 06:02本頁面
  

【正文】 系統(tǒng)源程序清單及說明 包:編寫客戶端的一些通用組件 包:編寫客戶端的一些控制流程,如注冊(cè)、登錄、聊天等等 包:編寫客戶端的界面 包:存放系統(tǒng)用到的圖片 包:存放客戶端網(wǎng)絡(luò)通信相關(guān)的程序 包:存放一些工具的包,如本系統(tǒng)中的界面居中、界面風(fēng)格設(shè)置等功能。然后右擊項(xiàng)目中的 src 文件夾下的 Server 包中的 ,選擇運(yùn)行方式 java 應(yīng)用程序。因此最好是直接導(dǎo)入 Eclipse 中運(yùn)行,演示效果最佳。需要分別打包,分別在機(jī)器上安裝配置。尤其是在我一邊忙著考研一邊做畢業(yè)設(shè)計(jì)的過程中,更是給予我莫大的鼓舞和幫助,最后使得我 的畢業(yè)設(shè)計(jì)能夠順利的完成。 本科畢業(yè)設(shè)計(jì) 42 致謝 衷心感謝馬福民老師在本次畢業(yè)設(shè)計(jì)的系統(tǒng)開發(fā)和畢業(yè)論文撰寫過程中對(duì)我的指導(dǎo)和幫助。設(shè)計(jì)能力才是檢驗(yàn)一個(gè)軟件工程師水平的指 標(biāo)。這次的畢業(yè)設(shè)計(jì)確實(shí)讓我學(xué)到了很多知識(shí)。 當(dāng)然功能越想越多,有的是技術(shù)問題,有的是時(shí)間問題,總而言之期待以后完善。 完成好友搜索,添加好友、好友訪問權(quán)限設(shè)置相關(guān)功能。 期待解決的問題: 完成用戶隱身登錄不影響消息接收及記住密碼自動(dòng)登錄的功能。所有的文件不都可以轉(zhuǎn)化為二進(jìn)制的字節(jié)流嗎,這樣就可以實(shí)現(xiàn)底層的數(shù)據(jù)傳輸了。如何將不同格式的文件發(fā)送給對(duì)方也讓我一籌莫展。這個(gè)方法雖然笨了點(diǎn),有冗余的操作,但是功能實(shí)現(xiàn)了。凡是給不在線好友發(fā)送消息,統(tǒng)一寫入數(shù)據(jù)庫。 離線消息推送。客戶端有時(shí)是請(qǐng)求登錄驗(yàn)證,有時(shí)是請(qǐng)本科畢業(yè)設(shè)計(jì) 40 求返回好友列表,有時(shí)是請(qǐng)求發(fā)送 文字消息給對(duì)方。 經(jīng)過我的鉆研, 有的問題已經(jīng)解決 但 還有一些期待實(shí)現(xiàn)。在 本系統(tǒng)開發(fā)的開發(fā)過程中我遇到了一些棘手問題,每遇到一個(gè)問題,我都想辦法去解決,在這個(gè)過程中我充分利用了網(wǎng)絡(luò)資源。系統(tǒng)開發(fā)過程中我 學(xué)習(xí)了 使用 MySQL 進(jìn)行數(shù)據(jù) 庫 建表的相關(guān)知識(shí),受益很多。數(shù)據(jù)庫的設(shè)計(jì)使自己學(xué)會(huì)了如何分析用戶的需求,設(shè)計(jì)出合理規(guī)范的數(shù)據(jù)庫。如何實(shí)現(xiàn)服務(wù)器和客戶端的通訊是本系統(tǒng)分析的重頭,通過參考李剛和孫衛(wèi)琴兩位業(yè)界知名Java 講師的著作,我理解了如何用 Java 實(shí)現(xiàn)網(wǎng)絡(luò)通信。編制系統(tǒng)開發(fā)計(jì)劃使自己對(duì)分析設(shè)計(jì)的所有工作和進(jìn)度有了清楚的了解。這種搜集和學(xué)習(xí)相關(guān)知識(shí)的方法和經(jīng)歷對(duì)自己以后做課題研究有很大的啟發(fā)意義。盡管這樣 ,我還是做了很多準(zhǔn)備工作,搜集了相關(guān)論文,參閱了相關(guān)書籍。 具體實(shí)現(xiàn)如圖 415 所示。若有,則執(zhí)行 receiveMsg操作接收離線消息。例如 3 號(hào)用戶 “mj”給沒有上線的 1 號(hào)用戶 “niaopeng”發(fā) 送消息后,消息內(nèi)容會(huì)存儲(chǔ)到數(shù)據(jù)庫中的 msg表中。 圖 414 用戶管理界面 本科畢業(yè)設(shè)計(jì) 38 (3)離線消息管理 在本系統(tǒng)中如果向?qū)Ψ桨l(fā)送消息是好友離線,則消息將會(huì)自動(dòng)保存在服務(wù)器的數(shù)據(jù)庫上,待好友上線時(shí)再推送過去。這個(gè)面板中使用了 JTable 對(duì)象以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫表的加載顯示。 具體功能實(shí)現(xiàn)如圖 41 413 所示 。日期、時(shí)間的顯示是 通過 Calendar 對(duì)象獲取系統(tǒng)當(dāng)前日期時(shí)間 來實(shí)現(xiàn)的 。在這里管理員還可以發(fā)送彈窗消息給所有在線用戶,可以發(fā)布群公告。 (1) 服務(wù)管理 在服務(wù)管理里面,管理員可以啟動(dòng)和關(guān)閉服務(wù)器 ,實(shí)際上就是啟動(dòng)服務(wù)器端一些線程,開始監(jiān)聽來自客戶端登錄的請(qǐng)求,并隨時(shí)做出相應(yīng)的處理。在 的身后,自然會(huì)有強(qiáng)大的后臺(tái)支撐,這保證了我們用戶能夠享受到騰訊 高質(zhì)量的服務(wù)。 } 后臺(tái)管理模塊功能實(shí)現(xiàn) [后臺(tái)管理 ]模塊分析 作為用戶我們只是使用了 的客戶端功能,即我們電腦上安裝的 軟件。 ()。 } ()。 while((a=())!=1){ (a=+a)。 int a=0。 ( ().getAbsolutePath())。 File ff=new File(().getAbsolutePath())。amp。 (new File((16)))。 if((transfer file)){ if((null, 是否接收文件+(16)+? , 提示 :, )==){ (不接收 )。 (a client connected!)。 dos=new DataOutputStream(())。 s=()。 String readSignal=。 } ()。 ()。 } ()。 byte[] b = new byte[512]。 // 測(cè)試此抽象路徑名表示的文件是否是一個(gè)標(biāo)準(zhǔn)文件。 if ((please transfer)) { (start transfer!)。 本科畢業(yè)設(shè)計(jì) 34 // equalsIgnoreCase()將此 String 與另一個(gè) String 比較,不考慮大小寫。 ()。 (transfer file + ().getName())。 具體實(shí)現(xiàn)效果如圖 410。 文件對(duì)話框界面的實(shí)現(xiàn)是基于第三方包,代碼中使用了 JFileChooser 對(duì)象,通過調(diào)用該對(duì)象的 showSaveDialog 和 showOpenDialog 方法來實(shí)現(xiàn)打開文件對(duì)話框和保存文件對(duì)話框。 文件傳送模塊功能實(shí)現(xiàn) [文件傳送 ]模塊分析 正如現(xiàn)在主流的即時(shí)通訊軟件一樣,聊天往往是最最基本的功能,除此之外還有很本科畢業(yè)設(shè)計(jì) 32 多實(shí)用功能,如文件傳送。官方聊天室界面(如圖 4 49)的 FriendList里可以看到當(dāng)前所有在線用戶,右上方有個(gè)群公告欄,可以在用戶管理里發(fā)布群公告。進(jìn)入官方聊天室后,用戶發(fā)送的消息將被推送至所有在線用戶。 [聊天室聊天 ]模塊分析 正如 的群功能一樣,本系統(tǒng)也模擬了一個(gè)群聊天的功能。 上方的工具條和右側(cè)的仿 秀用的是 JLabel 對(duì)象,在 JLabel 中調(diào)用 setIcon 方法 添加不同的背景圖片。 圖 47 的聊天 界面中運(yùn)用了兩個(gè) JTextPane 對(duì)象,一個(gè)用作發(fā)送消息,一個(gè)接收。 窗口停留定時(shí)器,移動(dòng)到合適位置后,開始計(jì)時(shí), 15 秒后窗口自動(dòng)消失,也可以自行點(diǎn)擊關(guān)閉。 本科畢業(yè)設(shè)計(jì) 31 消息彈窗 界面 使用了 JTextArea 組件, 并 沿用了登錄窗口的背景圖片。右鍵菜單是使用 JPopupMenu 對(duì)象來實(shí)現(xiàn)的。 本科畢業(yè)設(shè)計(jì) 30 圖 45 好友列表 這個(gè)界面使用的純 Swing 技術(shù)開發(fā),運(yùn)用了卡片布局 (CardLayOut)、網(wǎng)格布局(GridLayOut)、盒布局( BoxLayout) 等多種布局管理器相結(jié)合的方法。點(diǎn)擊表情 按鈕,還可以發(fā)送類似 表情的消息給對(duì)方。在好友列表中單擊鼠標(biāo)選中一位好友后再右擊鼠標(biāo),出現(xiàn)功能選項(xiàng)(如圖 45),點(diǎn)擊“發(fā)送即時(shí)消息”,即可打開一對(duì)一聊天界面(如圖 47)。 } catch (Exception e) { (null, 連接服務(wù)器失??!請(qǐng)檢查網(wǎng)絡(luò)連接或確保服務(wù)器已啟動(dòng)! )。 (開始檢測(cè)用戶名和密碼 ……)。 if (() || ()) (this, 用戶名和密碼不能為空! , 錯(cuò)誤 , )。 圖 43 登錄界面 本科畢業(yè)設(shè)計(jì) 28 圖 44 好友列表 登錄驗(yàn)證關(guān)鍵代碼如下: public void login() { String name = textField用戶名 .getText()。此界面右上角的關(guān)閉和最小化按鈕全部是用的 ImageIcon對(duì)象,所以外觀不同于 Windows 系統(tǒng)自帶的效果。 } 登錄模塊功能實(shí)現(xiàn) [登錄 ]模塊分析 登錄模塊用于驗(yàn)證客戶端用戶的合法性,用戶輸入用戶名和密碼后通過 Msg對(duì)象將其封裝成客戶端消息,通過 ObjectInputStream對(duì)象寫入 socket流中傳給服務(wù)器,服務(wù)器收到客戶端傳來的 Msg 對(duì)象后解析出用戶名和密碼并和數(shù)據(jù)庫的記錄比對(duì),兩者完全正確方可成功登錄。 (null, 連接服務(wù)器失??!請(qǐng)檢查您的網(wǎng)絡(luò)連接或確保服務(wù)器 已啟動(dòng)! , 錯(cuò)誤 , )。 ( + + () + + new String(()) + + sex + + () + + () + + () + + ())。 String sex = 男 。 else if(!newString(()) .equals(new String(()))) (null, 兩次輸入的密碼不一致,請(qǐng)重新輸 , 錯(cuò)誤 , )。 注冊(cè)功能關(guān)鍵代碼如下 : public void addEvent() { (new ActionListener() { public void actionPerformed(ActionEvent e) { if (().equals()) (null, 用戶名不能為空! , 錯(cuò)誤 , )。 郵箱地址的檢測(cè)用到了 Java 里面的正則表達(dá)式相關(guān)知識(shí),使用 Pattern 對(duì)象對(duì)郵箱地址格式的正則式進(jìn) 行編譯,再 調(diào)用 Matcher 對(duì)象的 matches 方法判斷用戶輸入的郵箱是否與該格式匹配。 本科畢業(yè)設(shè)計(jì) 25 圖 41 注冊(cè)界面 此外,信息填寫不完整或填寫有誤將有錯(cuò)誤提示,如圖 42。這個(gè)界面運(yùn)用了 EmptyBorder、JComboBox 等 Java 組件,將各個(gè)組件完美的組合在一個(gè) JPanel 上,設(shè)置 JFrame 對(duì)象 的背景圖片,即可構(gòu)造出美觀的界面。只有后臺(tái)數(shù)據(jù)庫里存在的用戶才能使用本系統(tǒng)。 } 本科畢業(yè)設(shè)計(jì) 24 第四章 基于 C/S 架構(gòu)的即時(shí)通訊系功能實(shí)現(xiàn) 注冊(cè)模塊功能實(shí)現(xiàn) [注冊(cè) ]模塊分析 正如我們使用的 一樣,使用之前我們要申請(qǐng)一個(gè) 號(hào)。 } } catch (Exception e) { ()。 b = true。 //啟動(dòng)該通訊線程 ()。 // 根據(jù)服務(wù)器返回的 Message的類型判斷是否成功登錄 Message ms = (Message) ()。 (o)。 s = new Socket(, 9988)。 // 客戶端請(qǐng)求 (參數(shù)聲明成 Object類型,客戶端只有第一次請(qǐng)求發(fā)送的是 user對(duì)象 ) public boolean sendLoginInfoToServer(Object o) { boolean b = false。 } } } catch (Exception e) { ()。 (m)。 //通知在線的其他人我上線了 (())。 Thread t=new Thread(scct)。 //這里就單開一個(gè)線程,讓該線程與該客戶端保持通訊 SerConClientThread scct=new SerConClientThread(s)。 if (().equals(123456)) { // 返回成功登錄的消息 (1)。 Message m=new Message()。 User u=(User)()。 while (true) { Socket s = ()。此類的 主要代碼如下: MyServer類: public class MyServer { public MyServer() { try { (服務(wù)器在 8888端口監(jiān)聽 )。 表 3 Msg類 屬性名 作用 private int msgId 消息的 ID號(hào),唯一識(shí)別該消息 private String msgContent 消息的內(nèi)容 private int sendFrom 消息的發(fā)送者 private int sendTo 消息的接收者 private String sendTime 消息發(fā)送時(shí)間 private String msgTye 消息類型 (私聊、群消息 ) (2)Users類 用戶表的實(shí)體即轉(zhuǎn)化成 Java程序中的 Users類 ,該類封裝了用戶的各項(xiàng)信息,是實(shí)現(xiàn)不同用戶相互聊天的基本對(duì)象,也是建立通訊連接的主體。 本科畢業(yè)設(shè)計(jì) 21
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1