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进行一些分析。