引导
摘要:一. Bootstrap 1. 用于客户端或者使用了无连接协议的应用程序中,负责为程序创建Channel; 2. Bootstrap类将会在bind() 后创建一个新的Channel,然后调用connect() 建立连接,connect() 被调用后Bootstrap类会创建一个新的Channel;
阅读全文
ChannelHandler,ChannelPipeline和ChannelHandlerContext
摘要:一. ChannelHandler 1. Channel的生命周期 ChannelUnregistered 已经被创建但还未注册到EventLoop; ChannelRegistered 已经注册到EventLoop; ChannelActive 处于活动状态,可以接受和发送数据; ChannelI
阅读全文
ByteBuf
摘要:一. 原理 1. ByteBuf维护了两个不同的索引:一个用于读取readerIndex,一个用于写入writerIndex; 2. 以read或者write开头的ByteBuf方法将会推进其对应的索引,以set或get开头的操作则不会; 二. 使用模式 1. 堆缓冲区 最常用的ByteBuf模式是
阅读全文
Netty的传输
摘要:一. 传输API 1. 核心是Channel接口,用于所有的IO操作; 2. 每个Channel都会分配一个ChannelPipeline和ChannelConfig,ChannelConfig包含了所有配置,支持热更新; 3. 为保证Channel顺序声明为java.lang.Comparable
阅读全文
几个常用接口
摘要:一. Channel接口 1. 基本的IO操作:bind(),connect(),read(),write(); 2. Channel接口提供的API降低了直接使用Socket类的复杂性; 3. 拥有许多预定义的,专门化实现的类:EmbeddedChannel,LocalServiceChannel
阅读全文
简单的Netty程序
摘要:1. ChannelHandler和业务逻辑 @Sharable // 一个ChannelHandler可以被多个Channel共享 public class EchoServiceHandler extends ChannelInboundHandlerAdapter { @Override pu
阅读全文
Netty的核心组件
摘要:1. Channel 传入或传出数据的载体,可以被打开或关闭,连接或断开连接; 2. 回调 一个回调其实就是一个方法,一个指向已经被提供给另外一个方法的方法的引用。这使得接受回调的方法可以在适当的时候调用前者; 3. Future 提供了另一种在操作完成时通知应用程序的方式; 这个对象可以看做是一个
阅读全文