Netty客户端与服务端通信
2023-09-14 22:53:58 9 举报
Netty客户端与服务端通信
作者其他创作
大纲/内容
如果是连接事件
比如有10个EventLoop,每次接受一个新的连接就会创建一个EventLoop,然后将SocketChannel注册到它的Selector上,当第11连接来时,其中一个EventLoop的Selector上会有2个SocketChannel被注册,即IO多路复用机制
看到这里,整个Netty架构就结束啦
doReadBytes(byteBuf)
a = k.attachment()
childGroup的EventLoop所在的Pipeline
pipeline = pipeline()
childGroup
eventLoop
遍历selectedKeys : k
如果是读或接受连接事件
这里的javaChannel就是SocketChannel啦将ScoketChannel的数据读到ByteBuf
如果是写事件
其实就是执行我们设置的childHandler处理器,处理业务逻辑
NioByteUnsafe#read
NioMessageUnsafe#read
客户端写
读事件
channel.connect
服务端
childGroup的EventLoop负责读请求
bossGroup的EventLoop只负责接受连接
byteBuf.writeBytes(javaChannel()
group
接受连接
processSelectedKeysOptimized()
pipeline.fireChannelRead(byteBuf)
processSelectedKeys()
这种附件通常与普通的通道操作相关联,例如读取或写入数据
底层会将SocketChannel注册到childGroup的其中一个EventLoop的Selector上
详见接受客户端连接
processSelectedKey
捕获 CancelledKeyException 异常,说明通道的 SelectionKey 已被取消,此时也需要关闭通道
客户端
a instanceof AbstractNioChannel
0 条评论
下一页