闲暇之余基于Java Swing自己写了一个即时聊天软件LL,源码地址:https://github.com/nmyphp/msn532.git。欢迎大家一起改进。

一、遇到的异常及解决办法

1.        org.hibernate.HibernateException:Could not parse configuration: /hibernate.cfg.xml

..省略

Caused by: org.dom4j.DocumentException: www.hibernate.orgNested exception: www.hibernate.org

解决办法:这是因为没有联网

2.        hibernate配置联合主键,被联合的各个字段必须加“insert=”false””属性,否则会字段重复插入,导致异常

<class name="AddFriend"table="msn_addfriend" catalog="newmsn">
  <composite-id>
    <key-propertyname="requestSenderId"></key-property>
    <key-propertyname="requestReceiverId"></key-property>
   </composite-id>
  <propertyname="requestSenderId" type="java.lang.Integer"insert="false">
    <columnname="requestSenderID"></column>
  </property>
  <propertyname="requestReceiverId" type="java.lang.Integer" insert="false">
    <columnname="requestReceiverID"></column>
  </property>
</class>

二、项目中遇到的难题及解决办法

1.        在好友列表中,怎么使用JList做出类似QQ那样的列表项(既有图片也有文字)

解决办法:重写ListCellRenderer类,自己实现JList中的对象的表现效果,否则只能显示字符串,具体如下:

主要是重写getListCellRendererComponent这个方法,你可以在这个类中显示JLabel等其他组件,value就是你加入到JList中的对象。最后用调用JList的setCellRenderer方法设置它的渲染器。

2.        怎么实现在一台电脑上可以登录多个客户端,并且他们之间正常通讯

解决办法:大家肯定知道通过端口号,但是仅仅是在每次创建客户端的时候,port++是不行的。我的解决办法是通过读写文件,每次创建新的客户端的时候就从文件中读取一个端口号,然后port++,再把port++写入文件,以便下一次读到的与这次不同。

3.        怎么实现一个客户端同时打开多个聊天窗口,而且接收消息互不干扰

解决办法:每个聊天窗口再设置一个ID,唯一标示该窗口,然后用一个Map储存这些窗口,key是窗口ID,element是窗口,这样每次接收到消息时,遍历这个Map,找到对应的窗口,将消息传给他。

4.        每个客户端的ip不一样,而且不同时间也可能不一样,比如我在学校,ip是随机分配的,不可能每个客户端储存一份所有其它客户端的ip。怎么实现他们之间的通讯呢?

解决办法:通过服务器转发消息。每次一个客户端登录时,就把自己的ip和端口号发给有固定ip和端口号的服务器,服务器用Map存起来,key是客户端的用户(登录客户端的User)的ID,element是客户端的ip和端口号。这样当有一个用户给另一个用户发消息时,就发给服务器(要表示发给哪一个User),服务器在Map中查找那个客户端的登录信息,然后把消息发给那个客户端。

仿QQ聊天工具(JAVA实现)项目总结相关推荐

  1. Java+Swing+mysql仿QQ聊天工具

    Java+Swing+mysql仿QQ聊天工具 一.系统介绍 二.功能展示 1.用户登陆 2.好友列表 3.好友聊天 4.服务器日志 三.系统实现 四.其它 1.其他系统实现 2.获取源码 一.系统介 ...

  2. java仿qq_「java qq」仿QQ聊天软件java实现(一) - seo实验室

    java qq 之前学java通信的时候写过简单的通信程序,但比较简陋,于是重新写了一个仿照QQ的聊天软件,主要在界面上做了优化,增加了一些功能.实现的功能有注册.登录.好友列表.分组.黑名单.添加好 ...

  3. Java实现仿QQ聊天工具的项目总结

    在写这篇文章之前,首先要感谢我的队友的辛勤付出,没有他们的付出与配合,这个项目是不能顺利完成的. 资源文件:工程文件,可运行JAR包 第一点 经验:项目开始之前应该先向老师或者学长先询问经验.或者到网 ...

  4. [源码和文档分享]基于java 的仿QQ聊天工具

    一 需求分析 本系统是基于java开发的聊天室.有用户注册.用户登陆.修改密码.忘记密码.添加好友.用户聊天.群聊功能.如果服务器还没有启动,则客户端是不可以登陆.注册.忘记密码,如果在运行过程中,服 ...

  5. java 仿qq庅_[源码和文档分享]基于java 的仿QQ聊天工具

    一 需求分析 本系统是基于java开发的聊天室.有用户注册.用户登陆.修改密码.忘记密码.添加好友.用户聊天.群聊功能.如果服务器还没有启动,则客户端是不可以登陆.注册.忘记密码,如果在运行过程中,服 ...

  6. java 仿qq 聊天工具(基于mvc三层架构,附 mvc架构模式pdf说明文档)支持开源

    用了3天多时间,因实验5要求就顺便做一下这东西吧,废话不多说,就简单说一些东西吧: 该聊天系统是基本mvc模式设计的(感觉这种模式代码比较好管理,可扩展性强),编写过程中涉及的东西比较多,包括对象实例 ...

  7. 基于java 的仿QQ聊天工具

    概要设计 在客户端:当用户登录后,生成唯一的socket, 存放在Client实体类中,在整个客户端就一个Client类和一个socket.有一个窗口控制器--ChatUIList,用来记录用户和好友 ...

  8. socket仿qq聊天工具(一)(扩展博客)

    这个项目主要是实现类似qq的一对一聊天和群聊天. 首先对于qq来说腾讯那边的服务器肯定是一直开着的,这样大家才可以登录的上去,登录上去以后会刷新你的好友列表.这样你才可以看到好友的信息,就是你拥有哪些 ...

  9. 仿QQ聊天工具(Android源码)

    2019独角兽企业重金招聘Python工程师标准>>> QQ给人感觉界面很简洁大气, 但如果要自己实现QQ的界面的话,难度还是不小的, 小编经过数日鏖战,实现了类似QQ登录和聊天界面 ...

最新文章

  1. CVPR 2021 比CNN和Transformer更好的Backbone?伯克利谷歌提出BoTNet,精度达84.7%
  2. HDU 2125 Local area network
  3. 入住两年的CSDN,在今天2020年8月27日,成为CSDN博客专家
  4. mysql 解释 游标赋值_Mysql_游标
  5. Linux平台下C++编程
  6. Spring MVC【入门】就这一篇!
  7. Java 加密解密之对称加密算法PBE
  8. 【外传】前端开发——elementUI使用方法
  9. 12个国外免费DNS服务
  10. carry on till tomorrow
  11. win10怎么还原成win7系统
  12. astar不能用了_解锁不可切除肝癌治疗的新时代——“T+A”北美上市会纪要
  13. PCB 设计技巧一百问
  14. Android 2个Service实现相互保活,通过bindservice来实现,不通过广播实现
  15. SSM项目tomcat启动失败-Multiple Contexts have a path of “/ssm-crud“
  16. 【建议收藏】Android初级开发者怎样快速提高开发技能?这20个开源APP能帮到你
  17. Wave(.wav)文件格式
  18. Android通过DeepLink方式跳转其他App传递参数
  19. 跟CEO、CSO们一起来上保险科技精品课:众安在线、泛华金控...30家标杆企业案例8小时深度闭门研讨...
  20. 求数列的和 (sdut oj)

热门文章

  1. 国际现货黄金狩猎的技巧:等待
  2. 一位普通背景的2021海内外博士申请总结
  3. 把握数字中国建设重大契机,实在智能携手山东商业职业技术学院共建“现代金融数字化实训中心”
  4. 好威武支持有希望打码歌词_我还不够好(希望他们不知道)
  5. 自动插入匹配与标题相关的百度图片或者搜狗图片软件-批量插入txt文档-Chatgpt批量写文章配图神器
  6. 怎么看手机系统android版本,怎么查看手机型号、配置、版本【图文教程】
  7. 疾风电竞显示器,让你享受快人一步的游戏体验
  8. 图像分割-区域分裂合并算法
  9. 学会python可以做什么兼职,能做兼职吗
  10. 最早截止时间有限(EDF)算法、最低松弛度优先(LLF)算法