java仿聊天室项目总结_Java团队课程设计-socket聊天室(Day4总结篇)
Java團(tuán)隊(duì)課程設(shè)計(jì)-socket聊天室(Day4總結(jié)篇)
團(tuán)隊(duì)名稱:
ChatRoom
項(xiàng)目git地址:
git提交記錄(僅截取部分):
面向?qū)ο笤O(shè)計(jì)包圖、類圖
包圖
UML類圖
總結(jié):
首先總結(jié)一下這幾天遇到的問題和解決方案
使用ObjectInputStream/ObjectOutputStream的時(shí)候不能直接進(jìn)行傳遞,需要將傳遞的類進(jìn)行序列化,例如:
服務(wù)器對(duì)消息的轉(zhuǎn)發(fā),因?yàn)槲覀兠恳粋€(gè)客戶端連接之后都有一個(gè)socket,所以轉(zhuǎn)發(fā)只需要調(diào)用相對(duì)應(yīng)的socket就能完成轉(zhuǎn)發(fā)。
文件源路徑問題,因?yàn)槲覀兇蛩銓㈨?xiàng)目打包成.exe文件,所以需要知道添加的資源的相對(duì)路徑,使用getSource方法獲取文件源,這個(gè)方法如果獲取不到路徑的話會(huì)直接報(bào)錯(cuò),值得一提的是,你的文件路徑編碼格式應(yīng)該與代碼的編碼格式一致,否則有可能獲取不到路徑而報(bào)錯(cuò)。
布局管理器無法控制組件大小,將布局管理器設(shè)置為null,直接用setBound方法根據(jù)x,y直接加入窗體。
重寫鼠標(biāo)方法能使畫面更美觀
數(shù)據(jù)庫(kù)需要?jiǎng)討B(tài)查找,但是preparedStatement.setString();不能設(shè)置表的名字,所以在百度很久沒有找到結(jié)果的情況下,我們使用字符串拼接,使用StringBuffer來代替preparedStatement.setString()的設(shè)置
關(guān)于文件轉(zhuǎn)發(fā),首先因?yàn)槭褂玫氖莝ocket,socket使用的是阻塞式傳輸,所以傳輸?shù)奈募笮〔灰诉^大,否則socket被占用其他的聊天信息就不能傳遞,我們?cè)O(shè)置的9*1024的byte數(shù)組,這樣保證在傳輸文件之后不用太久就能繼續(xù)聊天。
關(guān)于文件保存,文件被服務(wù)器轉(zhuǎn)發(fā)之后就要詢問是否保存,但是保存需要保存的文件名和地址,地址我們使用通用地址,一般為C:\Users\Administrator\Desktop,保存到桌面,不過我們的測(cè)試代碼是放在D盤的,因?yàn)闆]有權(quán)限放在那邊,不知道是否是因?yàn)閭€(gè)人原因還是代碼問題,文件名使用發(fā)送方的文件名
遇到但是還沒有解決的問題
注冊(cè)成功之后,需要將整個(gè)客戶端程序關(guān)閉再開啟,但是查找許久也沒有找到問題,也排除了數(shù)據(jù)庫(kù)沒有更新的這種可能,最后因?yàn)闀r(shí)間不夠了就將這個(gè)BUG留到以后來修復(fù)了。
同樣,登錄成功之后退出登錄也需要將整個(gè)程序關(guān)閉重新開啟。
在發(fā)送文件的時(shí)候不能繼續(xù)傳遞消息,因?yàn)閟ocket是阻塞式,所以解決不了這個(gè)問題,只能換netty。
想做但是還沒完成的功能
我們是想做好友系統(tǒng)的,具體思路也有,就是在數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)關(guān)于userName的好友列表,這樣客戶端就只能與好友列表的人進(jìn)行通訊,但是由于時(shí)間問題,想做的時(shí)候因?yàn)槭堑箶?shù)第二天了,就擱置了。
最開始我們是有一個(gè)大的聊天室,就是所有人都可以在里面說話,但是后來發(fā)現(xiàn)這個(gè)沒什么技術(shù)含量而且還不如直接私聊來的更好,我們就把這個(gè)功能砍了,后來想的是能不能自定義的幾個(gè)群聊,意思就是說客戶端可以拉幾個(gè)人開啟群聊,不過需要GUI大改,也是因?yàn)閬聿患八跃蜎]做了,如果下個(gè)學(xué)期JavaWeb還想做這個(gè)的話就把上面這些解決。
阿里巴巴代碼掃描插件idea版
掃描之后得到的警告
被警告的代碼
解決后的代碼
解決之后0警告
總結(jié)
以上是生活随笔為你收集整理的java仿聊天室项目总结_Java团队课程设计-socket聊天室(Day4总结篇)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用户模式与内核模式(2)
- 下一篇: 多线程和MsgWaitForMultip