java仿聊天室项目总结_Java团队课程设计-socket聊天室(Day4总结篇)
Java團隊課程設計-socket聊天室(Day4總結篇)
團隊名稱:
ChatRoom
項目git地址:
git提交記錄(僅截取部分):
面向對象設計包圖、類圖
包圖
UML類圖
總結:
首先總結一下這幾天遇到的問題和解決方案
使用ObjectInputStream/ObjectOutputStream的時候不能直接進行傳遞,需要將傳遞的類進行序列化,例如:
服務器對消息的轉發,因為我們每一個客戶端連接之后都有一個socket,所以轉發只需要調用相對應的socket就能完成轉發。
文件源路徑問題,因為我們打算將項目打包成.exe文件,所以需要知道添加的資源的相對路徑,使用getSource方法獲取文件源,這個方法如果獲取不到路徑的話會直接報錯,值得一提的是,你的文件路徑編碼格式應該與代碼的編碼格式一致,否則有可能獲取不到路徑而報錯。
布局管理器無法控制組件大小,將布局管理器設置為null,直接用setBound方法根據x,y直接加入窗體。
重寫鼠標方法能使畫面更美觀
數據庫需要動態查找,但是preparedStatement.setString();不能設置表的名字,所以在百度很久沒有找到結果的情況下,我們使用字符串拼接,使用StringBuffer來代替preparedStatement.setString()的設置
關于文件轉發,首先因為使用的是socket,socket使用的是阻塞式傳輸,所以傳輸的文件大小不宜過大,否則socket被占用其他的聊天信息就不能傳遞,我們設置的9*1024的byte數組,這樣保證在傳輸文件之后不用太久就能繼續聊天。
關于文件保存,文件被服務器轉發之后就要詢問是否保存,但是保存需要保存的文件名和地址,地址我們使用通用地址,一般為C:\Users\Administrator\Desktop,保存到桌面,不過我們的測試代碼是放在D盤的,因為沒有權限放在那邊,不知道是否是因為個人原因還是代碼問題,文件名使用發送方的文件名
遇到但是還沒有解決的問題
注冊成功之后,需要將整個客戶端程序關閉再開啟,但是查找許久也沒有找到問題,也排除了數據庫沒有更新的這種可能,最后因為時間不夠了就將這個BUG留到以后來修復了。
同樣,登錄成功之后退出登錄也需要將整個程序關閉重新開啟。
在發送文件的時候不能繼續傳遞消息,因為socket是阻塞式,所以解決不了這個問題,只能換netty。
想做但是還沒完成的功能
我們是想做好友系統的,具體思路也有,就是在數據庫創建一個關于userName的好友列表,這樣客戶端就只能與好友列表的人進行通訊,但是由于時間問題,想做的時候因為是倒數第二天了,就擱置了。
最開始我們是有一個大的聊天室,就是所有人都可以在里面說話,但是后來發現這個沒什么技術含量而且還不如直接私聊來的更好,我們就把這個功能砍了,后來想的是能不能自定義的幾個群聊,意思就是說客戶端可以拉幾個人開啟群聊,不過需要GUI大改,也是因為來不及所以就沒做了,如果下個學期JavaWeb還想做這個的話就把上面這些解決。
阿里巴巴代碼掃描插件idea版
掃描之后得到的警告
被警告的代碼
解決后的代碼
解決之后0警告
總結
以上是生活随笔為你收集整理的java仿聊天室项目总结_Java团队课程设计-socket聊天室(Day4总结篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用户模式与内核模式(2)
- 下一篇: java美元兑换,(Java实现) 美元