目录

前言

一、拾枝杂谈

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 多用户即时通信系统的实现 万字详解相关推荐

  1. java 面向对象三大特性之封装 万字详解(超详细)

    目录 前言 : 一.为什么需要封装 : 前言 : 1.封装的好处 : 2.java中的常见封装体: 二.封装简介 : 1.封装的概念 : 2.封装的关键 : 三.private关键字(重要) : 1. ...

  2. java 面向对象三大特性之继承 万字详解(超详细)

    目录 前言 : 一.为什么需要继承: 二.什么是继承(Warning : 篇幅较长)? 1.继承概述: 2.子类继承父类之后达到的效果 : ①如何使用继承? ②代码演示 : 3.继承的使用场景: eg ...

  3. java 面向对象三大特性之多态 万字详解(超详细)

    目录 前言 : 一.为什么需要多态 : 1.白璧微瑕 : 2.举栗(请甘雨,刻晴,钟离吃饭): 3.代码 : 4.问题 : 二.什么是多态 : 1.定义 : 2.多态的实现步骤(重要) : 三.多态的 ...

  4. java 双向链表_23张图!万字详解「链表」,从小白到大佬

    链表和数组是数据类型中两个重要又常用地基础数据类型,数组是连续存储在内存中的数据结构,因此它的优势是可以通过下标迅速的找到元素的位置,而它的缺点则是在插入和删除元素时会导致大量元素的被迫移动,为了解决 ...

  5. Java网络编程的小结--多用户即时通信系统

    文章目录 一.前言 二.项目概述   实现的功能有:   具体步骤我写在注释里,这里说一下实现思路: 三.测试 登录验证 拉取在线用户列表 私聊 群聊 发文件 服务器推送新闻 四.项目结构 客户端: ...

  6. JavaStudy11(22章-多用户即时通信系统qq)—B站韩顺平

    JavaStudy11(22章-多用户即时通信系统)-B站hsp 1.22章-多用户即时通信系统 1.1 QQ 聊天项目演示 1.1.1 项目 QQ 演示 1.2 为什么选择这个项目 1.2.1 项目 ...

  7. 万字详解5G车联网技术

    车路协同.车联网.智慧交通.智能网联车.自动驾驶.无人驾驶.高精度地图资料汇总与整理 车路协同优质资料整理地址: 语雀:车路协同.自动驾驶.车联网.智能网联车 · 语雀 (yuque.com) 因阿里 ...

  8. 不带头节点的链表有哪些缺点_23张图!万字详解「链表」,从小白到大佬!

    链表和数组是数据类型中两个重要又常用的基础数据类型. 数组是连续存储在内存中的数据结构,因此它的优势是可以通过下标迅速的找到元素的位置,而它的缺点则是在插入和删除元素时会导致大量元素的被迫移动,为了解 ...

  9. JVM---垃圾收集器(万字详解)

    垃圾收集器万字详解 垃圾回收器 垃圾收集器万字详解 前言 垃圾收集器说明与发展史 垃圾收集器简要说明 垃圾收集器发展史 垃圾收集器的分类 衡量垃圾收集器性能的指标 不同的垃圾收集器概述 7款经典的垃圾 ...

最新文章

  1. 为 Virtual SAN 就绪节点和就绪块做好准备
  2. javascript之DOM操作
  3. Java编程思想之-匿名内部类
  4. vue 分享微信传参_vue实现微信分享链接添加动态参数的方法
  5. ai逻辑回归_人工智能中的逻辑是什么?
  6. 别再吼孩子骂孩子了,他们的脑子真的会受伤变形
  7. pcb文件转成原理图_电路仿真与PCB设计 | 文末赠书
  8. Sublime text 3 SVN插件及使用方法
  9. Linux复制指定目录及子目录下特定类型的文件
  10. 网秦任命两位新董事 成立投资委员会
  11. mali GPU 官网指南
  12. 常用组态软件DDE配置
  13. 分享一篇前端大佬关于前端职业规划的建议
  14. 黑群晖使用pc端 Drive
  15. 柏拉图团队-手把手教你发代币(二)remix入门
  16. SMBIOS介绍(1):概述
  17. html图片折叠,CSS 实现 图片鼠标悬停折叠效果
  18. 五次多项式对2R平面机器人关节的轨迹控制
  19. 金蝶ERP K3 介绍
  20. 经历考研失败后如何找到心仪的工作

热门文章

  1. 【Qt】LLVM 与 clang-format 下载安装实现格式自动排版
  2. CCC-MGARCH:常值条件相关系数模型(R+Stata)
  3. 嵌入式软件开发工程师与FPGA开发工程师
  4. 红米AC3000、小米cr8806、8808、8809开启telnet和SSH
  5. POI2010 Hamsters
  6. bzoj-2085 Hamsters
  7. Java项目:药品管理系统(java+SpringBoot+html+layui+bootstrap+echarts+mysql)
  8. LBP特征原理与人脸检测
  9. 用电脑自带的画图工具画E-R图
  10. GSS2 - Can you answer these queries II