仿QQ聊天工具(JAVA实现)项目总结
闲暇之余基于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实现)项目总结相关推荐
- Java+Swing+mysql仿QQ聊天工具
Java+Swing+mysql仿QQ聊天工具 一.系统介绍 二.功能展示 1.用户登陆 2.好友列表 3.好友聊天 4.服务器日志 三.系统实现 四.其它 1.其他系统实现 2.获取源码 一.系统介 ...
- java仿qq_「java qq」仿QQ聊天软件java实现(一) - seo实验室
java qq 之前学java通信的时候写过简单的通信程序,但比较简陋,于是重新写了一个仿照QQ的聊天软件,主要在界面上做了优化,增加了一些功能.实现的功能有注册.登录.好友列表.分组.黑名单.添加好 ...
- Java实现仿QQ聊天工具的项目总结
在写这篇文章之前,首先要感谢我的队友的辛勤付出,没有他们的付出与配合,这个项目是不能顺利完成的. 资源文件:工程文件,可运行JAR包 第一点 经验:项目开始之前应该先向老师或者学长先询问经验.或者到网 ...
- [源码和文档分享]基于java 的仿QQ聊天工具
一 需求分析 本系统是基于java开发的聊天室.有用户注册.用户登陆.修改密码.忘记密码.添加好友.用户聊天.群聊功能.如果服务器还没有启动,则客户端是不可以登陆.注册.忘记密码,如果在运行过程中,服 ...
- java 仿qq庅_[源码和文档分享]基于java 的仿QQ聊天工具
一 需求分析 本系统是基于java开发的聊天室.有用户注册.用户登陆.修改密码.忘记密码.添加好友.用户聊天.群聊功能.如果服务器还没有启动,则客户端是不可以登陆.注册.忘记密码,如果在运行过程中,服 ...
- java 仿qq 聊天工具(基于mvc三层架构,附 mvc架构模式pdf说明文档)支持开源
用了3天多时间,因实验5要求就顺便做一下这东西吧,废话不多说,就简单说一些东西吧: 该聊天系统是基本mvc模式设计的(感觉这种模式代码比较好管理,可扩展性强),编写过程中涉及的东西比较多,包括对象实例 ...
- 基于java 的仿QQ聊天工具
概要设计 在客户端:当用户登录后,生成唯一的socket, 存放在Client实体类中,在整个客户端就一个Client类和一个socket.有一个窗口控制器--ChatUIList,用来记录用户和好友 ...
- socket仿qq聊天工具(一)(扩展博客)
这个项目主要是实现类似qq的一对一聊天和群聊天. 首先对于qq来说腾讯那边的服务器肯定是一直开着的,这样大家才可以登录的上去,登录上去以后会刷新你的好友列表.这样你才可以看到好友的信息,就是你拥有哪些 ...
- 仿QQ聊天工具(Android源码)
2019独角兽企业重金招聘Python工程师标准>>> QQ给人感觉界面很简洁大气, 但如果要自己实现QQ的界面的话,难度还是不小的, 小编经过数日鏖战,实现了类似QQ登录和聊天界面 ...
最新文章
- CVPR 2021 比CNN和Transformer更好的Backbone?伯克利谷歌提出BoTNet,精度达84.7%
- HDU 2125 Local area network
- 入住两年的CSDN,在今天2020年8月27日,成为CSDN博客专家
- mysql 解释 游标赋值_Mysql_游标
- Linux平台下C++编程
- Spring MVC【入门】就这一篇!
- Java 加密解密之对称加密算法PBE
- 【外传】前端开发——elementUI使用方法
- 12个国外免费DNS服务
- carry on till tomorrow
- win10怎么还原成win7系统
- astar不能用了_解锁不可切除肝癌治疗的新时代——“T+A”北美上市会纪要
- PCB 设计技巧一百问
- Android 2个Service实现相互保活,通过bindservice来实现,不通过广播实现
- SSM项目tomcat启动失败-Multiple Contexts have a path of “/ssm-crud“
- 【建议收藏】Android初级开发者怎样快速提高开发技能?这20个开源APP能帮到你
- Wave(.wav)文件格式
- Android通过DeepLink方式跳转其他App传递参数
- 跟CEO、CSO们一起来上保险科技精品课:众安在线、泛华金控...30家标杆企业案例8小时深度闭门研讨...
- 求数列的和 (sdut oj)
热门文章
- 国际现货黄金狩猎的技巧:等待
- 一位普通背景的2021海内外博士申请总结
- 把握数字中国建设重大契机,实在智能携手山东商业职业技术学院共建“现代金融数字化实训中心”
- 好威武支持有希望打码歌词_我还不够好(希望他们不知道)
- 自动插入匹配与标题相关的百度图片或者搜狗图片软件-批量插入txt文档-Chatgpt批量写文章配图神器
- 怎么看手机系统android版本,怎么查看手机型号、配置、版本【图文教程】
- 疾风电竞显示器,让你享受快人一步的游戏体验
- 图像分割-区域分裂合并算法
- 学会python可以做什么兼职,能做兼职吗
- 最早截止时间有限(EDF)算法、最低松弛度优先(LLF)算法