Practical Netty (4) 父子频道关系,频道与管道的关系
(下面这段话是完成本文后写的)我姑且将 Parent channel 称为父频道,Child Channel 称为子频道,Channel 就是频道了,而 ChannelPipeline 则称为管道。这样的目的只有一个,就是能在 CSDN 博客里把标题弄短一点。。。当然了,下文中仍然用了英文名称,因为上面这几个中文名称是我写完本文后回头起标题的时候,为了缩短才搞的,哈哈。
1. Netty 核心概念之三:Parent Channel 与 Child Channels
一个 ServerBootstrap 启动后,会创建一个 parent channel,这个 parent channel 用于接受 connections,每个 connection 会被分配到一个 child channel 上,用于后续的处理。
Parent channel 和 child channels 的 options 是由 ServerBootstrap 来设置的。可设置的 key 和 value type 如下:
-
"localAddress"
,InetSocketAddress
-
"keepAlive"
,boolean
-
"reuseAddress"
,boolean
-
"soLinger"
,int
-
"tcpNoDelay"
,boolean
-
"receiveBufferSize"
,int
-
"sendBufferSize"
,int
-
"trafficClass"
,int
一段示例代码:
bootstrap.setOption("reuseAddress", true)
bootstrap.setOption("localAddress", new InetSocketAddress(port))
bootstrap.setOption("child.tcpNoDelay", true)
bootstrap.setOption("child.receiveBufferSize", 1048576)
转载请注明来自柳大的CSDN博客:Blog.CSDN.net/Poechant,微博:weibo.com/lauginhom
2. Netty 核心概念之四:Channel 与 ChannelPipeline
先看 Netty 官方文档的一段话:
For each new channel, a new pipeline must be created and attached to the
channel. Once attached, the coupling between the channel and the pipeline
is permanent; the channel cannot attach another pipeline to it nor detach
the current pipeline from it.
每个 Channel 都有对应的一个 ChannelPipe,而且必须有。对于一个 Bootstrap,你需要指定它的 ChannelPipeline 如何产生,这通过:
bootstrap.setPipelineFactory(ChannelPipelineFactory factory)
来实现。ChannelPipelineFactory
是一个Interface
,所以你需要implements
它,举例如下:
bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
ChannelPipeline p = Channels.pipeline()
p.addLast("handler", new PoechantProxyHandler())
})
这是一个匿名类的实现方式,实名类你也应该懂的。官方那段话告诉我们,你给一个 Channel 只能 attach 一个 ChannelPipeline,而且一旦 attach 就不能 detach 了,这也就是为什么会有一个 setPipelineFactory 的东东的原因,它来定义给你的 Channel 绑定 ChannelPipeline 的规则(包括什么样的 ChannelPipeline)。
-
转载请注明来自柳大的CSDN博客:Blog.CSDN.net/Poechant,微博:weibo.com/lauginhom
-
分享到:
相关推荐
ChannelHandlerAdapter 4.X版本和5.X版本的差别很大。ChannelRead是属于5.X版本的4.X版本没有这个方法,所以如果要用ChannelRead。可以更换5.X版本的Netty。
4. **ChannelHandler 配置**: ChannelHandler 是 Netty 中处理网络事件的核心组件。在 Spring 集成中,可以创建一个 ChannelHandlerContext 的工厂类,该工厂由 Spring 管理,并在需要时为每个新建的 Channel 提供 ...
在本文中,我们将深入探讨 Netty 如何与 4G DTU 设备结合,以及如何构建基于 Java 的物联网(IoT)解决方案。 4G DTU,全称 4G 数据终端单元,是一种利用 4G 移动通信技术进行数据传输的设备。它通常用于远程监控、...
这个“netty4 api 中文”压缩包包含的是Netty 4.1版本的中文API文档,对于Java开发者来说,是学习和使用Netty的重要参考资料。 Netty 的核心设计理念是基于Reactor模式,这种模式在处理并发I/O操作时能显著提高效率...
赠送jar包:transport-netty4-client-5.5.1.jar; 赠送原API文档:transport-netty4-client-5.5.1-javadoc.jar; 赠送源代码:transport-netty4-client-5.5.1-sources.jar; 赠送Maven依赖信息文件:transport-netty...
《Netty 4 in Action》是一本专注于Netty框架的权威指南,专为那些希望深入理解和使用Netty构建高性能、高可靠性的网络应用的开发者而编写。Netty是由JBOSS组织开发的一个开源项目,它提供了一个高效、灵活且可扩展...
赠送jar包:transport-netty4-client-6.3.0.jar; 赠送原API文档:transport-netty4-client-6.3.0-javadoc.jar; 赠送源代码:transport-netty4-client-6.3.0-sources.jar; 赠送Maven依赖信息文件:transport-netty...
Netty4是该框架的最新版本,于2016年3月份更新,提供了用户手册以方便开发者学习和使用。 用户手册首先介绍了 Netty 的架构总览,强调了 Netty 在解决网络编程中通用问题时的高效性。Netty 采用了拦截链模式的事件...
这个“netty4 中文学习资料”压缩包可能是包含一系列关于 Netty 4 的教程、文档、案例分析或者代码示例,旨在帮助用户深入理解和掌握这一强大的网络通信库。 Netty 4 相比于之前的版本,引入了许多改进和新特性,...
《基于Netty4的CMPP协议解析与网关管理》 在信息技术日新月异的今天,短信服务作为企业与用户沟通的重要桥梁,其后台处理技术也在不断发展。本文将深入探讨一个利用Netty4框架实现的CMPP(China Mobile Peer-to-...
这个“netty4 sources 源码”指的是Netty 4.x 版本的源代码,其中4.0.33.Final是特定的版本号。源码分析对于理解Netty的工作原理、优化性能以及定制化开发非常有帮助。 Netty 的核心特性包括: 1. **异步事件驱动*...
这个“netty4-demos”项目显然包含了关于 Netty 4 的一系列示例,帮助开发者理解并应用 Netty 框架。 在深入探讨 Netty 知识点之前,先来理解一下什么是 Netty。Netty 是由 JBoss 提供的一个开源项目,它提供了对 ...
文件"12345.txt"可能是Netty通信过程中使用到的数据样本或配置信息,而"Netty4"可能是包含源代码、测试用例或其他相关资源的目录。具体用途可能需要根据文件内容来解读。 总的来说,Netty 4提供了一套强大且灵活的...
在本文中,我们将深入探讨 Netty 4 的完整配置以及如何通过实例来理解和应用它。 1. **Netty 4 版本差异**: Netty 的不同版本可能在API、性能优化或新特性上有所变化。例如,Netty 4.x 引入了更多的Java 8特性和...
这个“netty 4 demo”是基于Netty 4的一个示例项目,出自《Netty权威指南》这本书,旨在帮助开发者更好地理解和应用Netty框架。 在Netty 4中,主要的改进包括: 1. **Java 7和8的支持**:Netty 4全面支持Java 7和8...
赠送jar包:transport-netty4-client-5.5.1.jar; 赠送原API文档:transport-netty4-client-5.5.1-javadoc.jar; 赠送源代码:transport-netty4-client-5.5.1-sources.jar; 赠送Maven依赖信息文件:transport-netty...
在本文中,我们将深入探讨如何利用Netty 4构建一个简单的服务端和客户端实例,以及如何在IntelliJ IDEA 2018.1.3这个强大的Java开发环境中设置和运行这些实例。 首先,Netty 4相较于之前的版本,引入了更多的性能...
netty4 所有jar包,需要的可以下载
Netty4.x的demo.版本4.0.28,配置tomcat7,jdk7.使用方法:导入的eclipse中,运行HelloServer.java,再运行HelloClient.java 这样客户端和服务器就可以通信了。希望对初次接触Netty的同学有所帮助!
在深入分析 Netty 4.x 源码之前,我们首先需要了解其核心概念和架构。 Netty 的核心组件包括: 1. **ByteBuf**: 作为传统 ByteBuffer 的替代品,ByteBuf 提供了更高效且易用的内存管理机制,支持读写分离,避免了...