Channel 接口EventLoop 接口 ChannelFuture 接口

本文介绍了Netty框架中核心的IO处理模型,包括EventLoop、ChannelHandler等关键组件的工作原理,以及如何通过编码器和解码器实现数据的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本的IO操作:bind connect read wirte依赖于底层网络传输所提供的原语。
一个EventLoopGroup包含多个EventLoop
一个EventLoop在它的生命周期内只和一个Thread绑定。
所有由EventLoop处理的Io时间都将在它专有的Thread上被处理;
一个Channel在它的生命周期内只注册与一个EventLoop;
一个EventLoop可能会被分配给 一个或多个Channel

ChannelFuture :可以看做是将来要执行的操作的结果的占位符。不知道什么时候执行。但是肯定会执行。

ChannelHandler接口:它充当了所有入站和出站数据的应用程序逻辑的容器。ChannelHandler的方法时由网络事件触发的。
ChannelPipeline接口:提供了ChannelHandler链的容器。并定义了用于在该链上传播入站和出站事件流的API。当Channel被创建时,它会自动分配到它专属的ChannelPipeline
ChannelHandlerContext:代表ChannelHandler和ChannelPipeline之间的绑定,它可以获取底层的Channel,但是它主要还是用于写出站数据。ctx.writeAndFlush(Unpooled.EMPTY_BUFFER)……..

编码器和解码器:
通过Netty发送或者接受一个消息的时候,将会发生一次数据转换。入站消息会被解码;字节转换为另一种格式:(通常是一个java对象)
出站消息:相反的方向转换:它将从它当前格式被编码为字节;转换的因为是因为网络数据总是一系列的字节。所有编码器和解码器类都实现了ChannelOutboundHandler或者ChannelInboundHandler接口

抽象类SimpleChannelInboundHandler来接收解码消息,并对数据应用业务逻辑。创建ChannelHandler只需要扩展基类SimpleChannelInboundHandler< T > T是要处理的消息的java类型。并且获取一个到ChannelHandlerContext的引用。这个引用作为输入参数传递给ChannelHandler的所有方法

引导:两种类型的引导。一种用于客户端(BootStrap)另一种用于服务器(ServerBootStrap)绑定一个端口因为服务器必须要监听起来;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值