【Java】仿QQ聊天室

本文介绍了QQ聊天应用的主要界面和功能,包括登录、好友列表和聊天。用户通过输入QQ号码和密码登录,服务器验证后返回结果。消息传递采用对象流,并定义了不同消息类型。服务器端使用循环监听客户端请求,当用户不在线时,信息存储在数据库。头像状态根据用户在线情况更新。登录成功后,服务器会返回在线好友列表。通过线程管理和hashmap实现信息转发和客户端状态管理。此外,新登录用户会通知已在线的其他用户。

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

要点整理

1、主要界面:登录界面、好友列表界面、聊天界面

2、用户登录功能:当用户点击登录后,把qq号码和密码发生给QQServer去验证,如果该用户合法,返回OK,不合法返回err

3、在网络间传递对象:对象流

4、对message规定一些规则:
mesType1->登录成功
mesType2->登录失败
mesType3->普通消息包
mesType4->要求在线好友的包
mesType5->返回在线好友的包

5、服务器端
①服务器端的控制界面,可以启动,关闭服务器,监听用户,发生阻塞就等待,然后接收客户端发来的信息。
②用while(true)循环监听,如果失败关闭连接,重来。
③如果客户端2不在线,那么客户端1发送的信息就会给服务器,数据库连接服务器保存。
④服务器为了可以完成信息转发
1、把服务器得到的每个socket保存在hashmap里面,用客户端的id标识该socket
2、当服务器和某个客户端形成一个连接时,服务器就单开一个线程,让这个线程与该客户端通信
3、客户端读取信息,读不到就等待
4、多人聊天时,不能将socket设为静态。而是在客户端和服务器端建立线程,然后用hashmap管理线程,管理用户聊天界面,管理好友名单界面类,让服务器知道客户端的情况,根据客户端的情况即发送的mes类型,服务器返回相应的信息。

6、对头像的处理:上线是彩色,下线是灰色
当一个用户登录成功后,就向服务器发送一个要求返回在线好友的包,服务器就回送一个在线好友的信息包,客户端收到这个包之后再处理。

7、如何让在前面登录的人,知道后面登录人的情况?
让每一个人登录成功后,就通知其他在线的人。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值