学习目录
一、案例分析
需求分析:
- 用户进行登录
- 显示在线的用户列表
- 用户进行无异常退出(客户端和服务端)
- 私聊
- 群聊
- 发文件
- 服务器推送新闻
涉及的技术:
- 面向对象
- 网络编程
- IO流
- 多线程
- 集合(模拟数据库)
- 异常处理
原理分析:
- 客户端(用户)和服务端(服务器)进行通信,客户端(用户)与客户端(用户)进行通信;在通信时,把数据封装到对象中,选择使用对象流的方式进行数据传输。
- 客户端和服务端 或 客户端与客户端在通信时都会产生两个socket,分别是对数据的写和读。如果一个服务端同时与两个或者多个客户端进行通信,那么就需要使用线程分组进行管理。如:客户端A与服务端通信,使用线程对它们两个socket进行管理;客户端B与服务端通信,再使用另外一个线程对它们两个socket进行管理。
- 如果客户端和服务端进行多个通信,那么就会产生多个线程,为了更好的管理线程,我们需要使用集合(如:HashMap)对多个线程进行管理。所以说一个集合里有多个线程,而每个线程都有一个socket,每个socket都对应一个数据通道
简单说明
服务端:
- 当客户端连接到服务器后,会得到一个socket
- 启动一个线程,该线程关联客服端的socket对象,也就是说socket是该线程属性
- 为了更好的管理线程,需要使用集合来管理
客户端:
- 和服务端通信时,使用对象方式 如:对象流来读写
- 当客户端与服务端连接后,也会得到socket
- 启动一个线程,该线程关联服务端的socket对象,也就是说socket是该线程属性
- 为了更好的管理线程,需要使用集合来管理
代码实现
链接:https://pan.baidu.com/s/1pfWGziDJJOXqRLEeLU3Kcw
提取码:qrso