項目全部文件(包括素材和源碼)已上傳到github https://github.com/codervivi/MyQqChat,歡迎克隆。
qq聊天項目使用簡介:
一、項目環境配置
-
軟件開發工具:IntelliJ IDEA 2018(剛開始在eclipse,中途移過來了,現在不確定能不能在eclipse上運行)
-
數據庫:MySQL8.0
-
通信協議:tcp協議
-
項目結構:客戶端/服務器結構
-
功能實現:
- 可與不同好友同時在線聊天
- 可與不同好友同時在線聊天
- 能夠區別顯示在線離線好友頭像
- 能夠實時顯示聊天記錄
-
項目啟動流程:
- 運行ServerFrame.java,點擊開啟服務器
- 運行Login.java即可進行登錄
- 登錄成功進入主頁面,雙擊在線好友即可打開聊天界面
- 多人在線,多次運行Login.java進行登錄即可
注意事項:
-
本項目Eclipse使用編碼格式:gbk(IDEA應該不會報錯)
-
數據形式:無論何種信息,都封裝成對象形式,登錄時發送的是User對象,之后全部為Message對象
-
本項目未實現離線聊天功能,可打開與離線好友的聊天界面,並可發送消息,但對方無法收到
-
與好友聊天需雙方均打開聊天界面再進行聊天:比如小明雙擊小紅打開界面,小紅雙擊小明打開界面,之后二人正常開始聊天;如果小明打開與小紅聊天界面,發送消息,此時小紅未打開與小明的聊天界面,則小紅無法收到此消息。
二、項目代碼結構如下:
客戶端代碼結構:
-
package com.client.view
- Login.java //用戶登錄界面
- Chat.java //好友聊天界面
- FriendList.java //登錄成功主頁面
-
package com.client.tools
- ClientToServerThread.java //登錄成功后開一個線程保持與服務器通訊,接收消息
- ManageChatFrame.java //管理所有打開的聊天界面
- ManageThread.java //管理所有與服務器通訊的線程
- ManageFriendListFrame.java//管理所有的主頁面(顯示好又列表的界面)
- MyTreeCellRender.java //設置樹形結構顯示好友時在線離線的不同顯示
-
package com.client.model
- LoginUser.java //檢驗用戶登錄信息並發送到服務器接收結果
服務器端代碼結構:
-
package com.server.view
- ServerFrame.java //服務器開啟關閉界面
-
package com.server.tools
- JDBC_Util.java //所有操作數據庫的方法全部在此類實現
- ServerConClientThread.java//客戶端登錄成功服務器開一個線程與此客戶端保持通訊
- ManaClientThread.java //管理所有與客戶端通信的線程
-
package com.server.model
- Server.java //用戶對客戶端發起登錄請求進行處理,驗證身份
公共包:
-
com.common
- Message.java //統一數據發送格式以對象序列化發送
- User.java //用戶類
- MsgType.java //定義不同信息類型
三、數據庫配置:
創建數據庫 chat
創建表:
- t_user保存已有的用戶信息
- t_friends保存用戶的好友信息
四、項目運行截圖如下:
五、補充以下:
- 目前沒有提供注冊賬號功能,因為注冊成功還必須添加好友,要不一個空列表沒有什么意義。
- 只有數據庫chat中t_user表中用戶才能登錄成功。
- 程序對用戶輸入信息進行各種檢驗,效果挺好。
- 項目未實現離線聊天功能,選擇與不在線好友聊天會有相應提示
六、總結:
本代碼確實是跟着一位大佬的代碼做的,所以這些圖片也都是這位大佬的素材,但是這個大佬寫的代碼沒有注釋,很多東西我不能理解,最終都是自己一點點摸索出來,所以有很很大部分功能並未實現,感興趣的朋友可以去看他的博客,功能比我的強多了,在此特別感謝這位大佬!https://blog.csdn.net/qq245034548/article/details/43063311
**歡迎指出不足!**