netty
2019-11-21 10:27:55 45 举报
Netty框图
作者其他创作
大纲/内容
taskQueue
READ
NioEventLoop
EventLoopGroup(Clinet)
channelHandler
Netty架构
pipeline
channelHandler3
Channel
Selector
ChannelPipeline
channelHandler2
register
workGroup
channelHandler1
初始化ChildChannel
根据原理图我们来梳理一下Java中NIO通信的过程:(1)、服务器打开了ServerSocketChannel,并绑定端口号。(2)、打开Selector多路复用器,同时将ServerSocketChannel注册到Selector模块上,并指明我们感兴趣的事件是OP_ACCEPT。(3)、开启Selector,Selector将会每隔一段时间轮询注册在它上面的SocketChannel是否有用户感兴趣的事件发生。目前Selector上面只有一个ServerSocketChannel。(4)、当有用户想要和服务器建立连接时,ServerSocketChannel的标志位被置为OP_ACCPET。Selector将该SocketChannel返回给服务器进程。服务器创建一个SocketChannel和该客户端的SocketChannel建立连接。(5)、服务器将创建的SocketChannel注册到Selector上,并指明感兴趣的事件是OP_READ。也就是当这个管道中数据可读时再来通知我。(6)、现在Selector上面一共监听了两个SocketChannel,一个是ServerSocketChannel,用来处理客户端连接;一个是SocketChannel,用来监听某个客户端是否有数据发过来。后面每当有新的客户端尝试连接服务器时,服务器就会重复第四和第五步操作。注意点:这里Server端不是所有SocketChannel都共享一个Buffer,而是每次处理一个事件都新建一个Buffer。————————————————
bossGroup
Client
Netty
NioSocketChannel
InboundHandler
channelread
channelwrite
OutboundHandler
EventLoop
EventLoopGroup(Server)
CONNECT
0 条评论
下一页