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 自动删除自身。

Netty demo实践
请阅读微信原文: https://mp.weixin.qq.com/s/BpGF_RYiW4EWM4T8aXmxcg

猜你喜欢

转载自itxiaojiang.iteye.com/blog/2431441