IO-Netty
文章平均质量分 92
OkidoGreen
这个作者很懒,什么都没留下…
展开
-
Netty 之 TCP粘包拆包场景
TCP编程底层都有粘包和拆包机制,因为我们在C/S这种传输模型下,以TCP协议传输的时候,在网络中的byte其实就像是河水,TCP就像一个搬运工,将这流水从一端转送到另一端,这时又分两种情况:1)如果客户端的每次制造的水比较多,也就是我们常说的客户端给的包比较大,TCP这个搬运工就会分多次去搬运。2)如果客户端每次制造的水比较少的话,TCP可能会等客户端多次生产之后,把所有的水一起转载 2016-09-20 14:48:42 · 1150 阅读 · 0 评论 -
Netty4学习笔记-- NioEventLoopGroup NioEventLoop
NioEventLoopGroup继承层次结构图Netty4的NioEventLoopGroup继承结构很复杂,为了理解它如何工作,我画了一张类似UML的图。但是这张图也很巨大,所以我做了以下处理:将位于不同包中的类或接口用不同的颜色加以区分接口名后面的括号里标注了大写字母I(Interface),抽象类名的后面标注了大写字母A(Abstract)转载 2016-09-22 15:42:13 · 5316 阅读 · 0 评论 -
Netty4学习笔记-- Bootstrap
Netty4的代码比我想象的要复杂的多,不过Netty4很好的将这种复杂性隐藏了起来,暴露出来的,是一个相对容易使用的接口。Bootstrap就是Netty试图隐藏这种复杂性的一个例子。bootstrap包bootstrap包是Netty4代码里最简单的一个包,总共只有4个类:Bootstrap继承结构AbstractBootstrap是转载 2016-09-22 15:33:30 · 2827 阅读 · 2 评论 -
Netty4学习笔记-- ChannelPipeline
Netty4Netty是一个和MINA类似的Java NIO框架,目前的最新版本是4.0.13,这两个框架的主要作者好像都是同一个韩国人。ChannelChannel是Netty最核心的接口,一个Channel就是一个联络Socket的通道,通过Channel,你可以对Socket进行各种操作。ChannelHandler用Netty编写网络转载 2016-09-22 15:30:32 · 2802 阅读 · 0 评论 -
Netty 之 Netty心跳之IdleStateHandler
Netty提供了对心跳机制的天然支持,心跳可以检测远程端是否存活,或者活跃今天我们就一起初识一下Netty4的心跳机制Netty4.0提供了一个类,名为IdleStateHandler,这个类可以对三种类型的心跳检测这个类的构造参数是这样的:前三个的参数解释如下:1)readerIdleTime:为读超时时间(转载 2016-09-22 11:50:43 · 19149 阅读 · 5 评论 -
protobuf在netty里面的应用举例
netty为protobuf提供了两个编码器(ProtobufEncoder,ProtobufVarint32LengthFieldPrepender),两个解码器(ProtobufVarint32FrameDecoder,ProtobufDecoder)[注]所谓的编码就是把应用程序使用的数据类型编码成在网络上传输的二进制字节流,反之同理。看一个netty官网上提供的一个使用protob转载 2016-09-22 11:44:48 · 1167 阅读 · 0 评论 -
Netty 之 Netty使用Google的ProtoBuf
protobuf是由Google开发的一套对数据结构进行序列化的方法,可用做通信协议,数据存储格式,等等。其特点是不限语言、不限平台、扩展性强Netty也提供了对Protobuf的天然支持,我们今天就写一个简单的示例,简单地了解一下Netty对Google的protoBuf的支持我们的示例场景很简单的:客户端发送一个信息,这个信息用Protobuf来做序列化转载 2016-09-22 11:43:58 · 1096 阅读 · 0 评论 -
Netty之 netty源码学习之netty server端源码初读(下)
上一篇简单的分析了一下NioEventLoop,ServerBootstrap等组件的创建过程做的一些操作现在我们一起看下当SingleThreadEventExecutor.java中的thread启动后,netty做的一些最最重要的一些操作我们接着昨天的代码看,昨天分析到register之后,调用这段代码:[java] view转载 2016-09-23 15:54:39 · 1091 阅读 · 0 评论 -
Netty 之 netty源码学习之netty server端源码初读(上)
server端是使用了Reactor模式对nio进行了一些封装,Reactor模式网上有很多资料,不赘述,了解了这个模式开始看源码netty的版本是4.0.21.Final[html] view plain copy dependency> groupId>io.nettygroupId> ar转载 2016-09-23 15:39:49 · 1093 阅读 · 0 评论 -
Netty 之 netty源码学习之大话java NIO
沉淀了一个月安安心心地学习了家纯大神的Jupiter(https://github.com/fengjiachun/Jupiter),感觉受益良多,感觉自己学习了这里面的精华的50%,不是谦虚,而是无知,因为我不知道着里面还有多少是我没有理解的,也许我看懂了他的代码,但我现在还不知道他那样做的好处吧废话不多说,听了大神的意见,开始慢慢看netty的源码,在学习netty源码之前转载 2016-09-23 15:30:06 · 1397 阅读 · 0 评论 -
Netty 之 浅析ByteToMessageDecoder
上一节一起学习了几个解码器,用于解决TCP协议网络传输过程中粘包和拆包的问题,用过Netty的人总会说一句话“用Netty一定要了解一下它的底层原理,这样才敢用”,其实很有感悟,Netty in action 这本书中也有一个章节分析了codec,也定义了几个自定义的译码器,但是它自定义的几个译码器全部是继承与ByteToMessageDecoder的,我们上文中的几个解码器例如Delimiter转载 2016-09-20 15:12:34 · 15334 阅读 · 1 评论 -
Netty 之 TCP粘包拆包基本解决方案
上个小节我们浅析了在Netty的使用的时候TCP的粘包和拆包的现象,Netty对此问题提供了相对比较丰富的解决方案Netty提供了几个常用的解码器,帮助我们解决这些问题,其实上述的粘包和拆包的问题,归根结底的解决方案就是发送端给远程端一个标记,告诉远程端,每个信息的结束标志是什么,这样,远程端获取到数据后,根据跟发送端约束的标志,将接收的信息分切或者合并成我们需要的信息,这样我转载 2016-09-20 14:49:57 · 3826 阅读 · 0 评论 -
Netty实现服务端客户端长连接通讯及心跳检测
通过netty实现服务端与客户端的长连接通讯,及心跳检测。 基本思路:netty服务端通过一个Map保存所有连接上来的客户端SocketChannel,客户端的Id作为Map的key。每次服务器端如果要向某个客户端发送消息,只需根据ClientId取出对应的SocketChannel,往里面写入message即可。心跳检测通过IdleEvent事件,定时向服务端放送Ping消息,检转载 2016-09-11 17:58:08 · 4084 阅读 · 0 评论