使用NIO - 实现一个多人聊天室

一、概念

1. NIO简介:

   ① 姓名:Non-blocking I/O 或 New I/O
   ② 出生:JDK 1.4
   ③ 作用:支持高并发网络服务

2. NIO网络模型相对于BIO的改进:

   ① 非阻塞式 I/O模型
   ② 弹性伸缩性强(BIO模型是多线程处理,NIO只需一个线程处理;所以BIO有性能瓶颈,而NIO理论上是可以有无数个客户端接入的)
   ③ 单线程节省资源

二、核心部件

1. Channel:

   1.1 特性:
    ① 双向性:不同于BIO的单向流(输入流和输出流),Channel相当于一个通道,既可读又可写。
    ② 非阻塞性
    ③ 操作唯一性:只可用Buffer操作Channel。

   1.2 实现:
    ① 文件类:FileChannel
    ② UDP类:DatagramChannel
    ③ TCP类:ServerSocketChannel / SocketChannel

   1.3 使用:
使用NIO - 实现一个多人聊天室_第1张图片
   1.4 个人理解:
    Channel中文释义为“信道”,相当于一个储存信息的管道,在服务器端是ServerSocketChannel,在客户端是SocketChannel。

2. Buffer:

   2.1 简介:
    ① 作用:读取Channel中的数据
    ② 本质:一块可以写入和读取的内存区域

   2.2 属性:
    ① Capacity - 容量
    ② Position - 位置
    ③ Limit - 上限
    ④ Mark - 标记

3. Selector:

   3.1 简介:
    ① 名称:多路复用器
    ② 作用:I/O就绪选择
    ③ 地位:NIO网络编程的基础
   3.2 使用:
使用NIO - 实现一个多人聊天室_第2张图片

三、源码地址

https://gitee.com/wxj1994/nio-chatroom

你可能感兴趣的:(网络)