java仿聊天室项目总结_Java团队课程设计-socket聊天室(Day4总结篇)

本文是关于Java团队课程设计中实现Socket聊天室的Day4总结。项目涉及对象序列化、消息转发、文件传输及布局管理。在开发过程中,解决了文件路径、布局控制和数据库动态查找等问题,但仍有部分问题待解决,如登录注册后需重启程序。未来计划增加好友系统和群聊功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java团队课程设计-socket聊天室(Day4总结篇)

团队名称:

ChatRoom

项目git地址:

git提交记录(仅截取部分):

17b56eab9a0e3e0e4b504e0da8a3a763.png

c9d43c79cf9ac0908180f5bf416326da.png

面向对象设计包图、类图

包图

8a52b1e62d6468592e925905090e05c8.png

UML类图

3ded3bba4210501fed5cdf67ef3ecafb.png

总结:

首先总结一下这几天遇到的问题和解决方案

使用ObjectInputStream/ObjectOutputStream的时候不能直接进行传递,需要将传递的类进行序列化,例如:

72c43889f3ed066b2f2654ca7144f8f5.png

服务器对消息的转发,因为我们每一个客户端连接之后都有一个socket,所以转发只需要调用相对应的socket就能完成转发。

文件源路径问题,因为我们打算将项目打包成.exe文件,所以需要知道添加的资源的相对路径,使用getSource方法获取文件源,这个方法如果获取不到路径的话会直接报错,值得一提的是,你的文件路径编码格式应该与代码的编码格式一致,否则有可能获取不到路径而报错。

布局管理器无法控制组件大小,将布局管理器设置为null,直接用setBound方法根据x,y直接加入窗体。

重写鼠标方法能使画面更美观

b9755dcce95e86ed4f766e42375cf789.png

数据库需要动态查找,但是preparedStatement.setString();不能设置表的名字,所以在百度很久没有找到结果的情况下,我们使用字符串拼接,使用StringBuffer来代替preparedStatement.setString()的设置

关于文件转发,首先因为使用的是socket,socket使用的是阻塞式传输,所以传输的文件大小不宜过大,否则socket被占用其他的聊天信息就不能传递,我们设置的9*1024的byte数组,这样保证在传输文件之后不用太久就能继续聊天。

关于文件保存,文件被服务器转发之后就要询问是否保存,但是保存需要保存的文件名和地址,地址我们使用通用地址,一般为C:\Users\Administrator\Desktop,保存到桌面,不过我们的测试代码是放在D盘的,因为没有权限放在那边,不知道是否是因为个人原因还是代码问题,文件名使用发送方的文件名

0cac069a7303467525e3fce939200f66.png

2db71938901133b85045ea0351ed7c1f.png

5b9eea005bafbca5f10f8df5950060f0.png

遇到但是还没有解决的问题

注册成功之后,需要将整个客户端程序关闭再开启,但是查找许久也没有找到问题,也排除了数据库没有更新的这种可能,最后因为时间不够了就将这个BUG留到以后来修复了。

同样,登录成功之后退出登录也需要将整个程序关闭重新开启。

在发送文件的时候不能继续传递消息,因为socket是阻塞式,所以解决不了这个问题,只能换netty。

想做但是还没完成的功能

我们是想做好友系统的,具体思路也有,就是在数据库创建一个关于userName的好友列表,这样客户端就只能与好友列表的人进行通讯,但是由于时间问题,想做的时候因为是倒数第二天了,就搁置了。

最开始我们是有一个大的聊天室,就是所有人都可以在里面说话,但是后来发现这个没什么技术含量而且还不如直接私聊来的更好,我们就把这个功能砍了,后来想的是能不能自定义的几个群聊,意思就是说客户端可以拉几个人开启群聊,不过需要GUI大改,也是因为来不及所以就没做了,如果下个学期JavaWeb还想做这个的话就把上面这些解决。

阿里巴巴代码扫描插件idea版

扫描之后得到的警告

c1635064cd1a3a47c19df32103a6d63b.png

被警告的代码

5de278e7be2c451704dd60588ea9e7a6.png

解决后的代码

8cf75ab63cd4f0f3d5307dd0f9d791be.png

解决之后0警告

e1c975920fc9efad6e1595ff4c85a419.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值