云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 第四阶段 实现多人聊天

第四阶段 实现多人聊天

  • 62 次阅读
  • 3 次下载
  • 2026/4/23 11:29:31

第四阶段 实现多人聊天 任务

让每个用户可以自由的和多个好友同时聊天。

思路

客户端每个QQ号码登录成功,均用一个线程来保持与服务器的通讯,并写一个类来专门管理这些线程。(将之前登录创建的线程的静态属性去掉),写一个专门管理聊天界面的管理类,用来保证服务端转发聊天信息到正确的聊天界面。

完成步骤

客户端:

1. 将客户端发送QQ登陆验证的类QqClientConnServer.java中的socket属性去掉 static属性。 2. 在tools包中:

(1)写一个线程类(ClientConnServerThread.java),用来使客户端与服务器保持通信,接收服务器转发的聊天信息。

在QqClientConnServer.java类中,登陆验证完毕后。 创建一个该QQ号和服务器端保持通讯连接的线程

ClientConnServerThread ccst=new ClientConnServerThread(s); 启动该线程 ccst.start();

将该线程添加到其管理类(2)类中去。

?ManageClientConnServerThread .addClientConnServerThread(((User)o).getUser(), ccst); (2)写一个类(ManageClientConnServerThread),用来管理客户端与服务器保持通信线程的类:创建哈希表,写一个添加ClientConnServerThread线程类的方法(void addClientConnServerThread(String qqId,ClientConnServerThread ccst)),写一个由QQ号获得线程类的方法(ClientConnServerThread getClientConnServerThread(String qqId))。

3. 去掉QqChat.java类中QqChat为线程类的这一设计(去掉implements runnable,相应去掉 run()方法)。

4. 在QqChat.java单击“发送”聊天消息包事件处理中,修改用于发送聊天消息包时所使用的socket的获取途径:

ObjectOutputStream oos=new ObjectOutputStream (ManageClientConnServerThread.getClientConnServerThread(userNo).getS().getOutputStream());

5. 注释掉好友列表类中启动聊天界面线程的代码。(已经呈报错状态,容易找到)

★ 接下来解决客户端(在客户端创建的保持与服务器聊天的线程

ClientConnServerThread.java中)如何将从服务器读取到的Message显示到正确的聊天界面中。

★ 思路:因为一个QQ用户可能同时打开了多个与好友的聊天窗口,接收到的包到底

显示在与哪个好友的聊天界面中,就需要获得与哪个好友聊天的界面,因此需要设计一个管理类,专门管理所有的聊天界面,而loginId+FriendId的组合能唯一确定一个聊天界面)。

6.在com.qq.client.tools包中,写一个管理聊天界面的类ManageQqChat.java:

写一个方法,添加聊天界面

addQqChat(String loginIdAndFriendId,QqChat qqChat) 写一个方法,获取聊天界面

QqChat getQqChat(String loginIdAndFriendId)

7. 在QqFriendList.java类中,双击某好友启动和某好友聊天界面时,即将聊天界面加入到其管理类中。

8. 在ClientConnServerThread.java类中,把从服务器获得的消息,显示到该显示的聊天界面。(在QqChat.java中写一个方法,让它显示Message)

搜索更多关于: 第四阶段 实现多人聊天 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

第四阶段 实现多人聊天 任务 让每个用户可以自由的和多个好友同时聊天。 思路 客户端每个QQ号码登录成功,均用一个线程来保持与服务器的通讯,并写一个类来专门管理这些线程。(将之前登录创建的线程的静态属性去掉),写一个专门管理聊天界面的管理类,用来保证服务端转发聊天信息到正确的聊天界面。 完成步骤 客户端: 1. 将客户端发送QQ登陆验证的类QqClientConnServer.java中的socket属性去掉 static属性。 2. 在tools包中: (1)写一个线程类(ClientConnServerThread.java),用来使客户端与服务器保持通信,接收服务器转发的聊天信息。 在QqClientConnServer.java类中,登陆验证完毕后。 创建一个该QQ

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com