Java團隊課程設計-socket聊天室(Day4總結篇)


Java團隊課程設計-socket聊天室(Day4總結篇)

團隊名稱:

ChatRoom

項目git地址:

https://gitee.com/Wenwrangler/ChatRoom.git

git提交記錄(僅截取部分):

面向對象設計包圖、類圖

包圖

UML類圖

總結:

首先總結一下這幾天遇到的問題和解決方案

  1. 使用ObjectInputStream/ObjectOutputStream的時候不能直接進行傳遞,需要將傳遞的類進行序列化,例如:

  2. 服務器對消息的轉發,因為我們每一個客戶端連接之后都有一個socket,所以轉發只需要調用相對應的socket就能完成轉發。

  3. 文件源路徑問題,因為我們打算將項目打包成.exe文件,所以需要知道添加的資源的相對路徑,使用getSource方法獲取文件源,這個方法如果獲取不到路徑的話會直接報錯,值得一提的是,你的文件路徑編碼格式應該與代碼的編碼格式一致,否則有可能獲取不到路徑而報錯。

  4. 布局管理器無法控制組件大小,將布局管理器設置為null,直接用setBound方法根據x,y直接加入窗體。

  5. 重寫鼠標方法能使畫面更美觀

  6. 數據庫需要動態查找,但是preparedStatement.setString();不能設置表的名字,所以在百度很久沒有找到結果的情況下,我們使用字符串拼接,使用StringBuffer來代替preparedStatement.setString()的設置

  7. 關於文件轉發,首先因為使用的是socket,socket使用的是阻塞式傳輸,所以傳輸的文件大小不宜過大,否則socket被占用其他的聊天信息就不能傳遞,我們設置的9*1024的byte數組,這樣保證在傳輸文件之后不用太久就能繼續聊天。

  8. 關於文件保存,文件被服務器轉發之后就要詢問是否保存,但是保存需要保存的文件名和地址,地址我們使用通用地址,一般為C:\Users\Administrator\Desktop,保存到桌面,不過我們的測試代碼是放在D盤的,因為沒有權限放在那邊,不知道是否是因為個人原因還是代碼問題,文件名使用發送方的文件名

遇到但是還沒有解決的問題
  1. 注冊成功之后,需要將整個客戶端程序關閉再開啟,但是查找許久也沒有找到問題,也排除了數據庫沒有更新的這種可能,最后因為時間不夠了就將這個BUG留到以后來修復了。
  2. 同樣,登錄成功之后退出登錄也需要將整個程序關閉重新開啟。
  3. 在發送文件的時候不能繼續傳遞消息,因為socket是阻塞式,所以解決不了這個問題,只能換netty。
想做但是還沒完成的功能
  1. 我們是想做好友系統的,具體思路也有,就是在數據庫創建一個關於userName的好友列表,這樣客戶端就只能與好友列表的人進行通訊,但是由於時間問題,想做的時候因為是倒數第二天了,就擱置了。
  2. 最開始我們是有一個大的聊天室,就是所有人都可以在里面說話,但是后來發現這個沒什么技術含量而且還不如直接私聊來的更好,我們就把這個功能砍了,后來想的是能不能自定義的幾個群聊,意思就是說客戶端可以拉幾個人開啟群聊,不過需要GUI大改,也是因為來不及所以就沒做了,如果下個學期JavaWeb還想做這個的話就把上面這些解決。
阿里巴巴代碼掃描插件idea版

掃描之后得到的警告

被警告的代碼

解決后的代碼

解決之后0警告

最后附上我們前三篇的鏈接
Java團隊課程設計-socket聊天室(Day1)

Java團隊課程設計-socket聊天室(Day2)

Java團隊課程設計-socket聊天室(Day3)

還有我們組每個人的個人總結博客
Java課程設計--個人總結--溫海傑--組長
用Java Swing實現QQ聊天界面--陳星星--組員
Java團隊課程設計-socket聊天室(個人總結)--黃泓彬--組員


免責聲明!

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



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