netty源码学习笔记--Channel的定义
Channel是netty的核心组件,作为服务端和客户端的抽象代表
下面是基于Netty4画出的Channel接口继承关系
channel 接口继承体系已经梳理完,
具体的实现 按以下规则分类:括号内的是表示类名中含有该关键字则表示对应的分类
传输协议:udp/ip (Datagram), tcp/ip (Socket),sctp/ip (Sctp), http2(Http2Stream)
所属类型:客户端,服务端(带Server的),进程间通信(Domain),(使用udp/ip协议的不区分客户端和服务端)
接下来是各接口提供的功能定义:
接口名 | 作用 |
---|---|
AttributeMap |
提供属性<AttributeKey,AttributeValue>查询 , 该接口的实现需要线程安全 |
ChannelOutBountInvoker |
提供IO 输出相关操作 |
Comparable |
用来比较Channel的ChannelId |
Channel |
netty核心接口,套接字组件的抽象, 提供操作相关接口, 如write,read,connect,accept等 |
ServerChannel |
该接口不提供额外的方法, 只是用来标志是一个服务端的Channel, 接收来自客户端的连接后创建对应的子Channel |
UnixChannel |
暴露仅在类Unix系统上提供的操作,如Epoll |
DuplexChannel |
标志该channel是双工的 |
DatagramChannel |
使用UDP/IP协议来收发数据的Channel |
Http2StreamChannel |
采用http2协议的Channel,该接口应该还没设计完, 被标记为了@UntableApi,目前仅有一个直接实现类 |
SctpServerChannel |
采用SCTP/IP协议的Channel, SCTP采用的是组播的通信方式, 因此该Channel可绑定多个宿主地址 |
ServerSocketChannel |
采用TCP/IP协议的服务端Channel, 仅接收采用TCP/IP协议的客户端连接 |
ServerDomainSocketChannel |
类Unix系统上用来接收 进程间通信(IPC) 的Channel |
SocketChannel |
采用TCP/IP协议的Channel |
DomainSocketChannel |
类Unix系统上用来 进程间通信(IPC) 的Channel |