第二十二章 多用户即时通信系统(推消息 私聊 发文件)

发布时间:2024年01月02日

第二十二章 多用户即时通信系统(推消息 私聊 发文件)

1.多用户通信系统演示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.项目开发流程

在这里插入图片描述
在这里插入图片描述

3.多用户通信需求

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.通信系统整体分析

在这里插入图片描述

5.QQ用户登入1(客户端和服务端)

User类

在这里插入图片描述

Message类

在这里插入图片描述

MessageType接口

在这里插入图片描述

6.QQ用户登入2(客户端)

在这里插入图片描述
在这里插入图片描述

工具类Utility

在这里插入图片描述

QQView类 菜单界面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试成功
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.QQ用户登入3(客户端)

User类 提供一个无参构造器

在这里插入图片描述

UserClientService类 完成用户登入验证和注册

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ClientConnectServerThread类 客户端的线程

在这里插入图片描述
在这里插入图片描述

8.QQ用户登入4(客户端)

UserClientService类 启动线程

我们这边设置一个布尔值b,如果我们可以成功登入(即进入if语句),那我们的b就变为true,否则还是为false,我们在最后返回这个布尔值b。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ManageClientConnectServerThread类 管理线程

在这里插入图片描述
在这里插入图片描述

UserClientService类 将线程放到集合中

在这里插入图片描述

QQView类 使用UserClientService类

在这里插入图片描述
在这里插入图片描述

9.QQ用户登入5(服务端)

下面写服务端的代码,注意:服务端也有User,Message,MessageType类
在这里插入图片描述

QQserver类 在监听9999端口,等待客户端的连接

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ServerConnectClientThread类 服务端的线程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

QQserver类 使用线程

在这里插入图片描述

10.QQ用户登入6(服务端)

ManageClientThreads类 管理和客户端通讯的线程

在这里插入图片描述

QQserver 将线程放入集合中,并进行失败时操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
服务端在9999端口监听,如果有一个客户端来了,那么就启动一个线程T1,跟他进行一个通讯。如果又有另一个客户端来了,那么再起一个线程T2,跟他进行通讯。以此类推。
在这里插入图片描述

11.QQ用户登入7(服务端|客户端)

QQFrame类 启动

在这里插入图片描述
在这里插入图片描述
下面继续测试
下面的登入失败的
在这里插入图片描述
下面是登入成功的
在这里插入图片描述

QQServer类 创建集合模拟数据库存放多个用户

静态代码块的new一个QQServer对象时,会调用一次
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
再次测试
我们先登入一个用户100
在这里插入图片描述
下面我们再登入另一个用户,我们发现系统不允许并行登入(parallel)
在这里插入图片描述
下面调整一下
在这里插入图片描述
在这里插入图片描述
下面我们再登入另一个用户 至尊宝,登入成功
在这里插入图片描述
下面还有一个注意点
在这里插入图片描述

12.拉取在线用户1(客户端|服务端)

在这里插入图片描述
客户端
在这里插入图片描述
服务端
在这里插入图片描述

UserClientService类 返回在线用户列表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们也可以分开来写
在这里插入图片描述

ClientConnectServerThread类

在这里插入图片描述

13.拉取在线用户2(服务端)

ServerConnectClientThread类 发送用户信息

在这里插入图片描述

ManageClientThreads类 编写方法返回用户

在这里插入图片描述

ServerConnectClientThread类 发送用户信息

在这里插入图片描述

14.拉取在线用户3

QQView类 调用拉取在线用户列表方法

在这里插入图片描述

运行成功
在这里插入图片描述
有个问题 null 要在线列表用户

UserClientService类

在这里插入图片描述
成功解决
在这里插入图片描述

15.无异常退出系统1

在这里插入图片描述

16.无异常退出系统2

客户端

UserClientService类 编写退出客户端的方法

在这里插入图片描述
在这里插入图片描述
由于我们客户端这里只有一个socket,所以上面的写法就够用了
或者使用下面的写法(当有多个socket时)
在这里插入图片描述
在这里插入图片描述

QQView类 调用方法

在这里插入图片描述

服务端

ManageClientThread类 新增移除线程方法

在这里插入图片描述

ServerConnectClientThread类 服务端退出

在这里插入图片描述
在这里插入图片描述

17.私聊思路分析

在这里插入图片描述

18.私聊代码实现1

客户端

QQView类

在这里插入图片描述

MessageClientService类 提供与消息相关的服务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

服务端

ServerConnectClientThread类

在这里插入图片描述
在这里插入图片描述

客户端

ClientConnectServerThread类 接收聊天消息

在这里插入图片描述

QQView类 调用

在这里插入图片描述
在这里插入图片描述

19.私聊代码实现2

出错了
在这里插入图片描述
修改完成
在这里插入图片描述
成功
在这里插入图片描述

20.群发分析实现

在这里插入图片描述

客户端

QQView类

在这里插入图片描述

MessageType类 新增消息类型(客户端和服务器端)

在这里插入图片描述
在这里插入图片描述

MessageClientService类

在这里插入图片描述
在这里插入图片描述

服务端

ServerConnectClientThread类 群发信息

在这里插入图片描述
在这里插入图片描述

客户端

ClientConnectServerThread类 接受群发的消息

在这里插入图片描述

QQView类 调用方法

在这里插入图片描述
成功
在这里插入图片描述

21.发文件思路分析

在这里插入图片描述
在这里插入图片描述

22.发文件实现1(客户端)

MessageType类 新增发送文件类型

在这里插入图片描述

Message类 扩展文件相关内容(客户端|服务端)

在这里插入图片描述
在这里插入图片描述

FileClientService类 该类完成文件的传输

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

23.发文件实现2

服务端

ServerConnectClientThread类 发送文件

在这里插入图片描述
在这里插入图片描述

客户端

ClientConnectServerThread类 接收文件

在这里插入图片描述

QQView类 调用发送文件的方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

24.服务端推送新闻(服务端)

SendNewsToAllService类 推送新闻的线程

在这里插入图片描述
在这里插入图片描述
这里我们的线程发送了一次就退出了,如果我们想要发送多次,我们需要用一个while循环将其包起来,
在这里插入图片描述
如果不再想要推送新闻,则退出
在这里插入图片描述
添加消息类型,不然客户端不知道怎么处理
在这里插入图片描述

QQServer类 启动推送新闻的线程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

25.离线留言和发文件

在这里插入图片描述
在这里插入图片描述

文章来源:https://blog.csdn.net/m0_72232218/article/details/135324215
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。