netty学习记录1
最近在学习netty,看的是《netty权威指南 第2版》。
然后看的同时也把书上面的代码一行行敲下来做练习,不过到第三章就出问题了。
按照书上讲的,sever/client端都需要继承ChannelHandlerAdapter这个类,然后重写channelActive()、channelRead()等几个方法。
然后就是进行到这里,我以外的发现ChannelHandlerAdapter里面其实并没有那几个要被重写的方法,因此就算把程序运行起来也会发现程序没反应。
然后如果我把ChannelHandlerAdapter改成ChannelInboundHandlerAdapter之后,程序又能正常收发数据了。
我百思不得其解,以为是作者敲错了,但是百度上也没看到有人说有问题,而且这书也是第二版了,应该不会有这种问题的。
最后看一个文章的时候才发现了原因,原因就是我和作者使用的jar包版本不同。我使用的是4.1.6.Final的,而作者是5.0.0.Alpha的,所以导致的这个问题。
文章链接:Netty初步
Netty3使用了上行下行的概念
Netty3: ChannelHandler有两个子接口ChannelUpstreamHandler,ChannelDownstreamHandler, 上行和下行。
Netty4使用了入站出站的概念
Netty4: 接口变成了ChannelInboundHandler ChannelOutboundHandler,可能是为了避免原来的上下行造成误解,所以改成入站和出站了。
Netty5: 取消了进站、出站的划分,统一为继承ChannelHandlerAdapter,原来的ChannelInboundHandlerAdapter,ChannelOutboundHandlerAdapter被废弃。
但是很奇怪的是,netty官方5.0.0版本貌似还就没更新了,一直更新的都是4.1版本的