Java課程設計--網絡聊天室


簡易網絡聊天室

項目git地址

git提交記錄

前期調查

在聊天室中的每個用戶可以發送消息,發送的消息分為群聊消息和私聊消息,每兩個用戶的聊天消息顯示在一個界面上,每個群組的聊天消息顯示在一個界面上。通過netty框架來編寫服務器端的轉發 消息代碼,客戶端對每個消息的處理代碼。

功能流程圖

面向對象設計類圖

服務器端UML類圖

客戶端UML類圖

關鍵代碼分析

服務器端轉發群聊消息代碼

在ChannelUtils這個類中存儲了許多map,其中一個map存儲一個字符串類型的id和與之對應的ChannelGroup,服務器就是通過這個id獲得ChannelGroup從而轉發給ChannelGroup中的每個客戶端,這樣在一個群組里的其他客戶端就能收到任何一個客戶端發送的信息

服務器端轉發私聊消息代碼

ChannelUtils中還有一個map存儲每個用戶的id和與之對應的Channel,通過這個Channel服務器端可以傳輸數據到客戶端。當私聊消息傳輸到服務器端時,服務器端從消息中取出此消息的接收端id,然后通過id獲取對應的Channel,再將消息封裝好發送到接收端

客戶端接收群聊消息代碼(ClientChatMessageHandler類)

當服務器發送信息到客戶端時,如果是群聊信息,客戶端會自動調用ClientChatMessageHandler中的channelRead0方法。通過傳輸的信息,可以獲得發送端的id和此消息屬於哪個聊天界面,然后客戶端調用方法將消息顯示到聊天窗口中

客戶端接收私聊消息代碼


當客戶端收到消息時,獲取消息中的發送者id、消息內容、需要發送到哪個私聊窗口,若沒有這個窗口則需新建一個窗口顯示發送端和接收端的聊天消息,然后將消息顯示到窗口中。

項目總結

課程設計可以學到許多課堂上學不到的知識,比如netty框架、git、雲服務器等等,這些都需要我們在實踐過程中去自學,還加強了我們的團隊開發能力,知道如何將自己的代碼交給別人使用,同時也知道如何使用別人的代碼,將自己代碼實現的功能和別人代碼實現的功能結合起來,完善程序的功能.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM