Netty Channel
Netty 中的通道 Channel 是对Java原生网络编程Api的封装,以TCP编程为例 ,在java中,有两种常用方式:
- 基于BIO,在JDK1.4之前,可以使用 java.net 包中的
ServerSocket/Socket来代表服务端和客户端; - 基于NIO,在Jdk1.4引入Nio之后,可以使用 java.nio.channels 包中的
ServerSocketChannel/SocketChannel来代表服务端与客户端;
在Netty中,分别进行了封装:
- 使用
OioServerSocketChannel/OioSocketChannel对ServerSocket/Socket进行了封装; - 使用
NioServerSocketChannel/NioSocketChannel对ServerSocketChannel/SocketChannel进行了封装;
封装主要有两个方面,首先通过ChannelConfig来封装与Channel相关的配置,然后将对Channel的操作抽象成一个接口ChannelHander,并通过链表的形式来进行组织,以便定义操作的顺序,本文尝试从这两个角度对Netty中的Channel进行一些分析。