zoukankan      html  css  js  c++  java
  • 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:UsersAdministratorDesktop,保存到桌面,不过我们的测试代码是放在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聊天室(个人总结)--黄泓彬--组员

  • 相关阅读:
    Silverlight 游戏开发小技巧:扇形排列元素
    Silverlight C# 游戏开发:L9 天空盒
    快乐技术开发者沙龙银光聚会第二期
    Silverlight 游戏开发小技巧:动感弹出动画
    Silverlight 游戏开发:可重用的拖拽控件
    获微软MVP
    Silverlight 游戏开发小技巧:动感小菜单1
    Protobuf语言指南
    使用xrdp或Xmanager 远程连接 CentOS6
    Linux 下使用 NMON 分析系统性能(其他如dstat、iostat)
  • 原文地址:https://www.cnblogs.com/haijie-wrangler/p/12169314.html
Copyright © 2011-2022 走看看