【JAVA学习笔记】69 - 多用户通信系统

项目代码

https://github.com/yinhai1114/Java_Learning_Code/tree/main/QQClient

https://github.com/yinhai1114/Java_Learning_Code/tree/main/QQServer

〇、环境设置以及前言

该项目内会弱化UI界面的设计,因为JAVA本质不是用来开发界面的。

项目开发流程

对于单主机,如何启动多个main方法执行程序

点击run就可以在控制台看到多个main程序了

一、需求分析

1.用户登录

2.拉取在线用户列表

3.无异常退出(客户端、服务端)

4.私聊

5.群聊

6.发文件

7.服务器推送新闻

二、界面设计

1.用户登录

2.拉取在线列表

3.私聊

4.群聊

5.发文件

6.文件服务器推送新闻

三、功能实现

1.用户登录

1.功能说明因为还没有学习数据库,我们人为规定用户名/id = 100,密码123456就可以登录,其它用户不能登录,后面使用HashMap模拟数据库,可以多个用户登录.

参考上面的图,需要很多代码才能实现打通管道并保持管道。

2.拉取在线用户列表

服务端发送在线列表给客户端通过Message

3.无异常退出

我们现在的程序只是退出了main主线程,但是和服务器的通信线程并没有结束,所以就会导致程序实际还在运行

4.私聊

5.群聊

该功能跟私聊的功能基本类似

6.发文件

也比较简单,有socket管道之后直接传入数据流即可,

7.服务器推送新闻

本质上是群发消息

8.拓展 离线功能

1.实现离线留言,如果某个用户没有在线,当登录后,可以接受离线的消息

2.实现离线发文件,如果某个用户没有在线,当登录后,可以接受离线的文件

文件大同小异,麻烦的还是面向对象和haspmap的基础要搞好,不然添加会很混乱,代码就不拷贝到这里了,直接放在git了

相关推荐
递归不收敛26 分钟前
吴恩达机器学习课程(PyTorch 适配)学习笔记:3.4 强化学习
pytorch·学习·机器学习
烧冻鸡翅QAQ27 分钟前
考研408笔记
笔记·考研
StarPrayers.29 分钟前
卷积层(Convolutional Layer)学习笔记
人工智能·笔记·深度学习·学习·机器学习
能不能别报错1 小时前
K8s学习笔记(十五) pause容器与init容器
笔记·学习·kubernetes
无言以对,沉默不语,随你随你。1 小时前
【解决办法】GitBash不能在任意文件夹打开
经验分享·笔记·git
ᖰ・◡・ᖳ1 小时前
JavaScript:神奇的ES6之旅
前端·javascript·学习·es6
小马学嵌入式~2 小时前
堆排序原理与实现详解
开发语言·数据结构·学习·算法
递归不收敛2 小时前
吴恩达机器学习课程(PyTorch适配)学习笔记:1.4 模型评估与问题解决
pytorch·学习·机器学习
又是忙碌的一天2 小时前
前端学习 JavaScript
前端·javascript·学习
牛马大师兄2 小时前
STM32独立看门狗IWDG与窗口看门狗WWDG知识梳理笔记
笔记·stm32·单片机·嵌入式硬件·嵌入式·看门狗