netty入门实践
阅读微信原文:https://mp.weixin.qq.com/s/BpGF_RYiW4EWM4T8aXmxcg
Netty基础概念
Bootstrap和ServerBootstrap:引导类,提供了一个用于应用程序网络层配置的容器;Bootstrap用于客户端,ServerBootstrap用于服务端,轮询客户端的Bootstrap或DatagramChannel,监听其是否连接到服务器
Channel:底层网络传输API必须提供给应用I/O操作的接口,定义了与socket丰富交互的操作集,如bind,close,config,connect,isActive,isOpen,isWritable,read,write等等
ChannelHandler:支持多协议,提供用于数据处理的容器,常用接口ChannelInboundHandler,用来定义处理入站事件的方法,接受到数据后,可在其中进行业务逻辑的处理;
ChannelPipeline:为ChannelHandler链提供一个API,用于管理沿着ChannelHandler链入站和出站的事件;每个Channel都有自己的ChannelPipeline,当Channel创建时自动创建ChannelPipeline
EventLoop:用于处理Channel的I/O操作,一个单一的EventLoop通常会处理多个Channel的I/O操作;一个EventLoopGroup可以可以包含EventLoop,可以自动检索下一个EventLoop
ChannelFuture:用于异步接受数据,通过注册ChannelFutureListener来监听数据是否到达
ChannelHandlerContext:ChanneHandler链中,事件可以通过ChanneHandlerContext传递给下一个ChanneHandler;其作用之一是绑定ChannelHandler和ChannelPipeline;
ChannelHandler是如何安装在ChannelPipeline:主要是实现了ChannelHandler的抽象ChannelInitializer。ChannelInitializer子类通过ServerBootstrap进行注册。当它的方法initChannel()被调用时,这个对象将安装自定义的ChannelHandler(下文中的EchoServerHandler与EchoClientHandler)集到pipeline。当这个操作完成时,ChannelInitializer子类则从ChannelPipeline自动删除自身。
Nettydemo实践
请阅读微信原文:https://mp.weixin.qq.com/s/BpGF_RYiW4EWM4T8aXmxcg