码迷,mamicode.com
首页 > Web开发 > 详细

基于netty实现单聊、群聊功能

时间:2018-10-24 15:47:10      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:sha   tst   jdk   tps   字节   coder   行操作   操作   解析   

学习资料

https://juejin.im/book/5b4bc28bf265da0f60130116/section/5b6a1a9cf265da0f87595521

 

收获:

1. Netty 是什么? 经过我们整个小册的学习,我们可以了解到,Netty 其实可以看做是对 BIO 和 NIO 的封装,并提供良好的 IO 读写相关的 API,另外还提供了非常多的开箱即用的 handler,工具类等等。 2. 服务端和客户端启动 Netty 提供了两大启动辅助类,ServerBootstrap 和 Bootstrap, 他们的启动参数类似,都是分为 配置 IO 类型,配置线程模型。 配置 TCP 参数,attr 属性。 配置 handler。server 端除了配置 handler,还需要配置 childHandler,他是定义每条连接的处理器。 3. ByteBuf 接着,我们又学习了 Netty 对二进制数据的抽象类 ByteBuf,ByteBuf 底层又可以细分为堆内存和堆外内存,它的 API 要比 jdk 提供的 ByteBuffer 要更好用,ByteBuf 所有的操作其实都是基于读指针和写指针来进行操作的,把申请到的一块内存划分为可读区、可写区,另外还提供了自动扩容的功能。 4. 自定义协议拆包与编解码 通常,我们要实现客户端与服务端的通信,需要自定义协议,说白了就是双方商量在字节流里面,对应位置的字节段分别表示什么含义。 我们用的最多的协议呢就是基于长度的协议,一个协议数据包里面包含了一个长度字段,我们在解析的时候,首先第一步就是从字节流里面根据自定义协议截取出一个个数据包,使用的最多的拆包器就是 LengthFieldBasedFrameDecoder,只需要给他配置一些参数,即可实现自动拆包。 拆包之后呢,我们就拿到了代表字节流区段的一个个 ByteBuf,我们的解码器的作用就是把这些个 ByteBuf 变成一个个 java 对象,这样我们后续的 handler 就可以进行相应的逻辑的处理。 5. handler 与 pipeline Netty 对逻辑处理流的处理其实和 TCP 协议栈的思路非常类似,分为输入和输出,也就是 inBound 和 outBound 类型的 handler,inBound 类 handler 的添加顺序与事件传播的顺序相同,而 outBound 类 handler 的添加顺序与事件传播的顺序相反,这里一定要注意。 无状态的 handler 可以改造为单例模式,但是千万记得要加 @ChannelHandler.Sharable 注... https://juejin.im 掘金 — 一个帮助开发者成长的社区

 

基于netty实现单聊、群聊功能

标签:sha   tst   jdk   tps   字节   coder   行操作   操作   解析   

原文地址:https://www.cnblogs.com/huilei/p/9842459.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!