netty使用介绍

2016-04-30 22:08:00
admin
原创 2564
摘要:netty使用介绍

一、netty使用介绍

1、示例文档:https://netty.io/wiki/index.html

2、帮助文档:https://netty.io/wiki/user-guide-for-4.x.html

3、ServerBootstrap用于初始化服务端,Bootstrap用于初始化客户端;

4、ServerBootstrap.group(bossGroup,workerGroup),设置线程池

5、Bootstrap.group(workerGroup),设置线程池;

6、bossGroup线程池用于建立连接,workerGroup线程池用于数据收发

7、NioServerSocketChannel实现了ServerSocketChannel,用于服务端通道;

8、NioSocketChannel实现了SocketChannel,用于客户端通道,用于已建立通道;

9、ChannelHandler需要释放传递给他的ReferenceCounted对象,ByteBuf是引用计数对象;


ByteBuf使用介绍:

1、ByteBuf.readableBytes(),可读字节数量;

2、ByteBuf.markReaderIndex(),标记读位置;

3、ByteBuf.resetReaderIndex(),恢复读位置;

4、ByteBuf.skipBytes(length),丢弃指定数量字节;

5、ByteBuf.slice(index,length),返回一个片段,底层数据共享,读写位置相互独立;

6、ByteBuf.retainedSlice(index,length),功能跟slice一致,但会增加原始缓存引用计数;

7、ByteBuf包含读位置和写位置,所以不需要flip操作,ridx和widx之间就是有效数据;

8、AdaptivePoolingAllocator.AdaptiveByteBuf实现了ByteBuf,默认使用该缓存;


codec使用介绍:

1、ByteToMessageDecoder帮助解码,他会一直缓存数据,直到数据可以成功解码一个消息;

2、ByteToMessageDecoder.decode需要判断数据长度是否足够解码,每次仅需解码一个消息;

3、ByteToMessageDecoder.decode成功解码一个消息可能被调用多次,编码时需要考虑重入情况;

4、ReplayingDecoder帮助文档:https://netty.io/4.1/api/io/netty/handler/codec/ReplayingDecoder.html

5、ReplayingDecoder继承ByteToMessageDecoder,具备父类功能,且在解码时不用判断数据长度是否足够;

6、ReplayingDecoder包含ReplayingDecoderByteBuf,该类在读取数据且长度不够时,抛出异常并恢复读位置;

7、ReplayingDecoder.checkpoint更新解码状态,避免重复解码时,执行所有步骤;


codec使用介绍:

1、LineBasedFrameDecoder用于按行解析消息,maxLength消息最大长度;

2、FixedLengthFrameDecoder用于解析定长消息,frameLength定长消息大小;

3、LengthFieldBasedFrameDecoder解析带长度字段的消息,maxFrameLength消息最大长度;

4、帮助文档:https://netty.io/4.1/api/io/netty/handler/codec/LengthFieldBasedFrameDecoder.html

发表评论
评论通过审核之后才会显示。