java版仿qq簡易聊天程序


項目全部文件(包括素材和源碼)已上傳到github https://github.com/codervivi/MyQqChat,歡迎克隆。

qq聊天項目使用簡介:

一、項目環境配置

  1. 軟件開發工具:IntelliJ IDEA 2018(剛開始在eclipse,中途移過來了,現在不確定能不能在eclipse上運行)

  2. 數據庫:MySQL8.0

  3. 通信協議:tcp協議

  4. 項目結構:客戶端/服務器結構

  5. 功能實現:

    • 可與不同好友同時在線聊天
    • 可與不同好友同時在線聊天
    • 能夠區別顯示在線離線好友頭像
    • 能夠實時顯示聊天記錄
  6. 項目啟動流程:

    • 運行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


**歡迎指出不足!**


免責聲明!

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



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