初次学习与研究NETTY,有如不妥,恳求批评与改正
准备工作
在集成了MAVEN的ECLIPSE中,导入下载好的NETTY自带的项目!现在研究如下代买片段
// Configure the client.
ClientBootstrap bootstrap = new ClientBootstrap(
new NioClientSocketChannelFactory(
Executors.newCachedThreadPool(),
Executors.newCachedThreadPool()));
// Set up the default event pipeline.
DiscardClientHandler handler = new DiscardClientHandler(firstMessageSize);
bootstrap.getPipeline().addLast("handler", handler);
// Start the connection attempt.
ChannelFuture future = bootstrap.connect(new InetSocketAddress(host, port));
// Wait until the connection is closed or the connection attempt fails.
future.getChannel().getCloseFuture().awaitUninterruptibly();
// Shut down thread pools to exit.
bootstrap.releaseExternalResources();
由此可以看出NETTY代码优良的注释,这点让我尤其喜欢,且值得学习和借签!
信手捏来
毫无疑问,BOOTSTRAP是我们能够亲手“摸到”的机器了。但是这个机器,得装上一个核心CHANNEL的制造机器,它才能组装好,这个就一目了然了!
运行之前,还有一个关键组件得自己造,那就是HANDLER,把它添加到正确位置(PIPELINE),整个组装完成了。现在按下CONNECT按钮,机器就轰轰运行了,只要站在旁边盯着显示屏FUTURE就可以了!
至此我们能够把看得见的都看了一遍!
关键概念
CHANNEL
参考文档,这里只是个人理解。首先CHANNEL就是数据通信通道,它有状态,可以读写,是这里面的最核心概念!那么现在又疑问了,在这个机器中,是什么时候建立的呢?是在哪儿建立的呢?怎么建立的呢?
PIPELINE
本质上他就是HANDLER的容器与管理者,如何加入自己的HANDLER?如何管理?弄清楚得参考文档了,这里就上面出现的稍微分析下!
HANDLER
熟悉观察者模式,就很容易理解它了!文档上指出它就是高级的INTERCEPTOR,FILTER!这个是我们干涉这部机器的主要关键点!这里不详谈
FUTURE
它就是操作结果显示器,我们也可以添加LISTNER!但是这里我有个疑问
那就是future.getChannel().getCloseFuture()得到的FUTURE为何与上面的那个不同?
由表及里
至于它们之间的静态结构,这个请参考文档!那么它们是如何从组装到运行,一步一步生成出来,然后发挥作用的呢?
CHANNEL是个重量级东东,和SESSION,CONNECTION类似的,所以我们得为制造它创好环境,这个就是它的工厂了!我们把CHANNEL工厂嵌入进应用机器里面,这就是第一步了!那么机器建造好了之后,让我们看下它里面有上面东东
在附件中,暂不晓得如何插入到这里
由此可以看到,这个时候PIPELINE,以及PIPELINE的工厂,和CHANNEL工厂再加上些参数OPTIONS,都准备好了!
下一步就是把我们的处理器HANDLER装到PIPELINE容器中了,如果细看源代码,发现这个PIPELINE并非运行时PIPELINE,这个就是PIPELINE工厂存在的原因,它们只是名字相同,实际上是不是同一对象的!
最后一步就是连接了,连接的时候,需要所有的东西都运转起来!
CHANNEL 就是这个时候造的。
最后感言
上面好多问题都没有解释,我就草草这么结束了!有些问题是我自己没有弄明白的!
NETTY这部机器的复杂之处和精妙之处就在于它的,一抽象统一,二异步,事件模型!
这就给我这些初学者添加了理解的复杂度!但是一旦深入其中,其代码是很优良的,结构更是巧夺天工,精彩绝伦!
- 大小: 3.2 KB
分享到:
相关推荐
java应用netty服务端和客户端示例,客户端和服务端的model对象目录必须一致
netty案例,netty4.1中级拓展篇十三《Netty基于SSL实现信息传输过程中双向加密验证》源码 ...
主要介绍了使用Netty解决TCP粘包和拆包问题过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Netty在IDEA中搭建HelloWorld服务端并对Netty执行流程与重要组件进行介绍示例代码;Netty在IDEA中搭建HelloWorld服务端并对Netty执行流程与重要组件进行介绍示例代码
netty源码和相关中文文档。帮助您快速上手netty开发。netty体验之旅祝您愉快
此项目做了netty通讯的客户端和服务端,可以直接运行 注意pom文件需要添加netty依赖
netty4.0和spring结合,可以处理tcp请求,用做游戏后台。方便简单。
Netty (netty-netty-4.0.56.Final.tar.gz)是一个 NIO 客户端服务器框架,可以快速轻松地开发协议服务器和客户端等网络应用程序。它极大地简化和流线了网络编程,例如 TCP 和 UDP 套接字服务器。 “快速和简单”并...
ChannelHandlerAdapter 4.X版本和5.X版本的差别很大。ChannelRead是属于5.X版本的4.X版本没有这个方法,所以如果要用ChannelRead。可以更换5.X版本的Netty。
Netty基础,用于学习Netty,参考黑马程序员的netty教程
Netty相当简化和流线化了网络应用的编程开发过程,例如,TCP和UDP的socket服务开发。 “快速”和“简单”并不意味着会让你的最终应用产生维护性或性能上的问题。Netty 是一个吸收了多种协议的实现经验,这些协议包括...
Netty (netty-netty-3.10.6.Final.tar.gz)是一个 NIO 客户端服务器框架,可以快速轻松地开发协议服务器和客户端等网络应用程序。它极大地简化和流线了网络编程,例如 TCP 和 UDP 套接字服务器。 “快速和简单”并...
netty-3.2.5.Final.jar netty包
随着物联网的发展,随之出现了各种传感器监测数据的实时发送,需要和netty服务器通讯,netty和传感器之间需要保持长连接(换句话说,netty和gateway之间都会主动给对方发送消息) 碰到的问题: netty作为服务器端如何...
netty权威指南和源码
Netty (netty-netty-5.0.0.Alpha2.tar.gz)是一个 NIO 客户端服务器框架,可以快速轻松地开发协议服务器和客户端等网络应用程序。它极大地简化和流线了网络编程,例如 TCP 和 UDP 套接字服务器。 “快速和简单”并...
springboot整合 netty做心跳检测 springboot整合 netty做心跳检测 springboot整合 netty做心跳检测 springboot整合 netty做心跳检测 springboot整合 netty做心跳检测 springboot整合 netty做心跳检测 springboot整合...
Netty入门教程
一种基于NETTY的远程过程调用方法.pdf
demo采用spring boot和maven编写,直接使用maven方式打开项目先运行TimeServer中的main函数再运行TimeClient中的main函数即可在控制台中看到效果