Netty Channel

Channel是Netty最核心的接口,一个Channel就是一个Socket的通道,经过Channel能够对Socket进行各类操做。

ChannelHandler:
ChannelHandler用来间接控制Channel,经过继承ChannelHandler能够实现本身的Handler处理Channel事件,一个ChannelHandler能够被加到多个ChannelPipeline中,程序中咱们通常直接继承ChannelInboundHandlerAdapter。

ChannelHandlerContext:
ChannelHandlerContext表明ChannelHandler和ChannelPipeline之间的关联,并在ChannelHandler添加到ChannelPipeline时建立一个实例。ChannelHandlerContext的主要功能是管理经过同一个ChannelPipeline 关联的ChannelHandler之间的交互。重要的是在Channel或者ChannelPipeline上调用write()都会把事件在整个管道传播,可是在ChannelHandler级别上,从一个处理程序转到下一个却要经过在 ChannelHandlerContext调用方法实现,ChannelHandlerContext会将事件传给下一个ChannelHandler。

ChannelPipeline:
ChannelPipeline实际上应该叫作ChannelHandlerPipeline,能够把ChannelPipeline当作是一个ChandlerHandler的链表(由ChannelHandlerContext串连起来),当须要对Channel进行某种处理的时候,Pipeline负责依次调用每个Handler进行处理。每一个Channel都有一个属于本身的Pipeline,调用Channel的pipeline()方法能够得到Channel的Pipeline,调用Pipeline#channel()方法能够得到Pipeline的Channel。

NioServerSocketChannel:
NioServerSocketChannel封装了一个ServerSocketChannel,ServerSocketChannel继承了AbstractSelectableChannel实现了SelectableChannel接口从而能够注册到Selector中去,ServerSocketChannle accept返回一个SocketChannel。
NioServerSocketChannel继承的是io.netty.channel.socket.ServerSocketChannel
NioServerSocketChannel封装的是java.nio.channels.ServerSocketChannel
方法:
    1. newSocket( )
    newSocket方法调用java.nio.channels.ServerSocketChannel new Socket方法,使用默认SelectorProvider openServerSocketChannel建立一个ServerSocketChannel
    2. doMessages(list)
    doMessages方法接收新的链接建立新的NioSocketChannel

NioSocketChannel:
NioSocketChannel封装了一个SocketChannel提供了更多方法,SocketChannel继承AbstractSelectableChannel实现了SelectableChannel接口从而能够注册到Selector中去,NioSocketChannel大部分方法都是调用java.nio.channels.SocketChannel的方法。
NioSocketChannel继承的是io.netty.channel.socket.SocketChannel
NioSocketChannel封装的是java.nio.channels.SocketChannel
方法:
    1. doConnect()
    doConnect方法直接调用java.nio.channels.SocketChannel的bind方法
    2. doWrite(buffer)
    doWrite方法直接调用java.nio.channels.SocketChannel的write方法java

相关文章
相关标签/搜索