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

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

  • 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类 启动线程
    • ManageClientConnectServerThread类 管理线程
    • UserClientService类 将线程放到集合中
    • QQView类 使用UserClientService类
  • 9.QQ用户登入5(服务端)
    • QQserver类 在监听9999端口,等待客户端的连接
    • ServerConnectClientThread类 服务端的线程
    • QQserver类 使用线程
  • 10.QQ用户登入6(服务端)
    • ManageClientThreads类 管理和客户端通讯的线程
    • QQserver 将线程放入集合中,并进行失败时操作
  • 11.QQ用户登入7(服务端|客户端)
    • QQFrame类 启动
    • QQServer类 创建集合模拟数据库存放多个用户
  • 12.拉取在线用户1(客户端|服务端)
    • UserClientService类 返回在线用户列表
    • ClientConnectServerThread类
  • 13.拉取在线用户2(服务端)
    • ServerConnectClientThread类 发送用户信息
    • ManageClientThreads类 编写方法返回用户
    • ServerConnectClientThread类 发送用户信息
  • 14.拉取在线用户3
    • QQView类 调用拉取在线用户列表方法
    • UserClientService类
  • 15.无异常退出系统1
  • 16.无异常退出系统2
    • UserClientService类 编写退出客户端的方法
    • 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类 推送新闻的线程
    • QQServer类 启动推送新闻的线程
  • 25.离线留言和发文件

1.多用户通信系统演示

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第1张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第2张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第3张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第4张图片

2.项目开发流程

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第5张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第6张图片

3.多用户通信需求

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第7张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第8张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第9张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第10张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第11张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第12张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第13张图片

4.通信系统整体分析

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

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

User类

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

Message类

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

MessageType接口

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

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

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第18张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第19张图片

工具类Utility

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

QQView类 菜单界面

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第21张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第22张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第23张图片
测试成功
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第24张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第25张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第26张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第27张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第28张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第29张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第30张图片

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

User类 提供一个无参构造器

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

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

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第32张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第33张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第34张图片

ClientConnectServerThread类 客户端的线程

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第35张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第36张图片

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

UserClientService类 启动线程

我们这边设置一个布尔值b,如果我们可以成功登入(即进入if语句),那我们的b就变为true,否则还是为false,我们在最后返回这个布尔值b。
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第37张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第38张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第39张图片

ManageClientConnectServerThread类 管理线程

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第40张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第41张图片

UserClientService类 将线程放到集合中

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

QQView类 使用UserClientService类

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第43张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第44张图片

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

下面写服务端的代码,注意:服务端也有User,Message,MessageType类
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第45张图片

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

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第46张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第47张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第48张图片

ServerConnectClientThread类 服务端的线程

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第49张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第50张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第51张图片

QQserver类 使用线程

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

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

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

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

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

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第54张图片
在这里插入图片描述
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第55张图片
服务端在9999端口监听,如果有一个客户端来了,那么就启动一个线程T1,跟他进行一个通讯。如果又有另一个客户端来了,那么再起一个线程T2,跟他进行通讯。以此类推。
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第56张图片

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

QQFrame类 启动

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第57张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第58张图片
下面继续测试
下面的登入失败的
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第59张图片
下面是登入成功的
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第60张图片

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

静态代码块的new一个QQServer对象时,会调用一次
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第61张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第62张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第63张图片
再次测试
我们先登入一个用户100
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第64张图片
下面我们再登入另一个用户,我们发现系统不允许并行登入(parallel)
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第65张图片
下面调整一下
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第66张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第67张图片
下面我们再登入另一个用户 至尊宝,登入成功
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第68张图片
下面还有一个注意点
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第69张图片

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

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第70张图片
客户端
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第71张图片
服务端
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第72张图片

UserClientService类 返回在线用户列表

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第73张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第74张图片
在这里插入图片描述
我们也可以分开来写
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第75张图片

ClientConnectServerThread类

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

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

ServerConnectClientThread类 发送用户信息

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

ManageClientThreads类 编写方法返回用户

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

ServerConnectClientThread类 发送用户信息

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

14.拉取在线用户3

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

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

运行成功
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第81张图片
有个问题 null 要在线列表用户

UserClientService类

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第82张图片
成功解决
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第83张图片

15.无异常退出系统1

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

16.无异常退出系统2

客户端

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

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第85张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第86张图片
由于我们客户端这里只有一个socket,所以上面的写法就够用了
或者使用下面的写法(当有多个socket时)
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第87张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第88张图片

QQView类 调用方法

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

服务端

ManageClientThread类 新增移除线程方法

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

ServerConnectClientThread类 服务端退出

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第91张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第92张图片

17.私聊思路分析

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

18.私聊代码实现1

客户端

QQView类

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

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

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第95张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第96张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第97张图片
在这里插入图片描述

服务端

ServerConnectClientThread类

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第98张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第99张图片

客户端

ClientConnectServerThread类 接收聊天消息

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

QQView类 调用

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第101张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第102张图片

19.私聊代码实现2

出错了
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第103张图片
修改完成
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第104张图片
成功
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第105张图片

20.群发分析实现

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

客户端

QQView类

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

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

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第108张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第109张图片

MessageClientService类

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第110张图片
在这里插入图片描述

服务端

ServerConnectClientThread类 群发信息

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第111张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第112张图片

客户端

ClientConnectServerThread类 接受群发的消息

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

QQView类 调用方法

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第114张图片
成功
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第115张图片

21.发文件思路分析

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第116张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第117张图片

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

MessageType类 新增发送文件类型

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

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

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第119张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第120张图片

FileClientService类 该类完成文件的传输

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第121张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第122张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第123张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第124张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第125张图片

23.发文件实现2

服务端

ServerConnectClientThread类 发送文件

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第126张图片
在这里插入图片描述

客户端

ClientConnectServerThread类 接收文件

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

QQView类 调用发送文件的方法

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第128张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第129张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第130张图片

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

SendNewsToAllService类 推送新闻的线程

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第131张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第132张图片
这里我们的线程发送了一次就退出了,如果我们想要发送多次,我们需要用一个while循环将其包起来,
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第133张图片
如果不再想要推送新闻,则退出
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第134张图片
添加消息类型,不然客户端不知道怎么处理
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第135张图片

QQServer类 启动推送新闻的线程

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第136张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第137张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第138张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第139张图片

25.离线留言和发文件

第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第140张图片
第二十二章 多用户即时通信系统(推消息 私聊 发文件)_第141张图片

你可能感兴趣的:(JAVA第二阶段2,java,网络,服务器)