java 多用户即时通信系统的实现 万字详解
目录
前言
一、拾枝杂谈
1.项目开发大体流程 :
2.多用户即时通信系统分析 :
1° 需求分析
2° 整体分析
二、用户登录
1.准备工作 :
2.客户端 :
1° 菜单界面
2° 登录验证
3° 线程创建
4° 线程管理
3.服务端 :
1° 用户验证
2° 线程创建
3° 线程管理
4.登录测试 :
三、在线列表
1.扩充MessageType中的类型 :
2.扩充UserClientService类中的方法 :
3.扩充客户端线程类中的内容 :
4.扩充ControlServerConnectClientThread类中的方法 :
5.扩充服务端线程类中的内容 :
6.拉取测试 :
四、退出系统
1.需要解决的问题 :
2.解决办法 :
1° 总思路
2° 客户端
3° 服务端
五、私聊群聊
1.私发消息 :
1° 思路分析
2° 代码实现
3° 运行测试
2.群发消息 :
1° 客户端
2° 服务端
3° 运行测试
六、传输文件
1.思路分析 :
2.客户端 :
3.服务端 :
4.运行测试 :
七、最终代码
1.客户端 :
1° View
2° UserClientService
3° MessageClientService
4° FileClientService
5° ClientConnectServiceThread
6° ControlClientConnectServiceThread
2.服务端 :
1° ChatServer
2° ServerConnectClientThread
3° ControlServerConnectClientThread
4° ChatFrame
3.公共部分 :
1° Message
2° MessageType
3° User
前言
本篇博文适合javaSE基础较为扎实的小伙伴儿们阅读,up会从实现层面和大家分享一个多用户即时通信系统,类似于QQ,微信这种可以实现登录,聊天,发文件,下线等功能的程序。但是声明一点,该多用户即时通信系统不是项目(up之后会专门开新的专栏来出项目),而只是对已学的java知识的联系和应用,可以理解为一个模拟项目,主要涉及到oop,集合,IO流,多线程,网络编程等内容。如果你想进一步巩固自己的java基础,这篇博文或许会是很好的选择。感谢阅读!
一、拾枝杂谈
1.项目开发大体流程 :
①分析阶段 : 需求分析师会从“技术实现”和“行业情况”两方面综合考虑,出一个需求分析报告(通常是白皮书),包含客户的具体要求以及项目最终要实现的功能。需求分析在整个项目开发流程中所占用的时间和资源——往往与项目本身的大小成正比。
②设计阶段 : 主要是架构师和项目经理揽活儿,有些公司会将二者合并。架构师/项目经理需要负责项目的设计工作(UML类图,流程图,模块设计,数据库,项目架构);并且要完成项目的原型开发——先在虚拟机上跑出一个预览的项目效果(不过多考虑性能),与客户进行对接,签订合约。一切就绪后,架构师/项目经理就会在公司的各个部门物色人选;比方说,当前项目是用java来实现的,架构师/项目经理就会挑选java技术牛逼的
java 多用户即时通信系统的实现 万字详解相关推荐
- java 面向对象三大特性之封装 万字详解(超详细)
目录 前言 : 一.为什么需要封装 : 前言 : 1.封装的好处 : 2.java中的常见封装体: 二.封装简介 : 1.封装的概念 : 2.封装的关键 : 三.private关键字(重要) : 1. ...
- java 面向对象三大特性之继承 万字详解(超详细)
目录 前言 : 一.为什么需要继承: 二.什么是继承(Warning : 篇幅较长)? 1.继承概述: 2.子类继承父类之后达到的效果 : ①如何使用继承? ②代码演示 : 3.继承的使用场景: eg ...
- java 面向对象三大特性之多态 万字详解(超详细)
目录 前言 : 一.为什么需要多态 : 1.白璧微瑕 : 2.举栗(请甘雨,刻晴,钟离吃饭): 3.代码 : 4.问题 : 二.什么是多态 : 1.定义 : 2.多态的实现步骤(重要) : 三.多态的 ...
- java 双向链表_23张图!万字详解「链表」,从小白到大佬
链表和数组是数据类型中两个重要又常用地基础数据类型,数组是连续存储在内存中的数据结构,因此它的优势是可以通过下标迅速的找到元素的位置,而它的缺点则是在插入和删除元素时会导致大量元素的被迫移动,为了解决 ...
- Java网络编程的小结--多用户即时通信系统
文章目录 一.前言 二.项目概述 实现的功能有: 具体步骤我写在注释里,这里说一下实现思路: 三.测试 登录验证 拉取在线用户列表 私聊 群聊 发文件 服务器推送新闻 四.项目结构 客户端: ...
- JavaStudy11(22章-多用户即时通信系统qq)—B站韩顺平
JavaStudy11(22章-多用户即时通信系统)-B站hsp 1.22章-多用户即时通信系统 1.1 QQ 聊天项目演示 1.1.1 项目 QQ 演示 1.2 为什么选择这个项目 1.2.1 项目 ...
- 万字详解5G车联网技术
车路协同.车联网.智慧交通.智能网联车.自动驾驶.无人驾驶.高精度地图资料汇总与整理 车路协同优质资料整理地址: 语雀:车路协同.自动驾驶.车联网.智能网联车 · 语雀 (yuque.com) 因阿里 ...
- 不带头节点的链表有哪些缺点_23张图!万字详解「链表」,从小白到大佬!
链表和数组是数据类型中两个重要又常用的基础数据类型. 数组是连续存储在内存中的数据结构,因此它的优势是可以通过下标迅速的找到元素的位置,而它的缺点则是在插入和删除元素时会导致大量元素的被迫移动,为了解 ...
- JVM---垃圾收集器(万字详解)
垃圾收集器万字详解 垃圾回收器 垃圾收集器万字详解 前言 垃圾收集器说明与发展史 垃圾收集器简要说明 垃圾收集器发展史 垃圾收集器的分类 衡量垃圾收集器性能的指标 不同的垃圾收集器概述 7款经典的垃圾 ...
最新文章
- 为 Virtual SAN 就绪节点和就绪块做好准备
- javascript之DOM操作
- Java编程思想之-匿名内部类
- vue 分享微信传参_vue实现微信分享链接添加动态参数的方法
- ai逻辑回归_人工智能中的逻辑是什么?
- 别再吼孩子骂孩子了,他们的脑子真的会受伤变形
- pcb文件转成原理图_电路仿真与PCB设计 | 文末赠书
- Sublime text 3 SVN插件及使用方法
- Linux复制指定目录及子目录下特定类型的文件
- 网秦任命两位新董事 成立投资委员会
- mali GPU 官网指南
- 常用组态软件DDE配置
- 分享一篇前端大佬关于前端职业规划的建议
- 黑群晖使用pc端 Drive
- 柏拉图团队-手把手教你发代币(二)remix入门
- SMBIOS介绍(1):概述
- html图片折叠,CSS 实现 图片鼠标悬停折叠效果
- 五次多项式对2R平面机器人关节的轨迹控制
- 金蝶ERP K3 介绍
- 经历考研失败后如何找到心仪的工作
热门文章
- 【Qt】LLVM 与 clang-format 下载安装实现格式自动排版
- CCC-MGARCH:常值条件相关系数模型(R+Stata)
- 嵌入式软件开发工程师与FPGA开发工程师
- 红米AC3000、小米cr8806、8808、8809开启telnet和SSH
- POI2010 Hamsters
- bzoj-2085 Hamsters
- Java项目:药品管理系统(java+SpringBoot+html+layui+bootstrap+echarts+mysql)
- LBP特征原理与人脸检测
- 用电脑自带的画图工具画E-R图
- GSS2 - Can you answer these queries II