`
Poechant
  • 浏览: 229423 次
博客专栏
Bebe66e7-3a30-3fc9-aeea-cfa3b474b591
Nginx高性能Web服务...
浏览量:24307
5738817b-23a1-3a32-86de-632d7da73b1e
Cumulus实时媒体服务...
浏览量:22094
社区版块
存档分类
最新评论

Practical Netty (4) 父子频道关系,频道与管道的关系

 
阅读更多

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

-

分享到:
评论

相关推荐

    netty4-netty5.rar

    ChannelHandlerAdapter 4.X版本和5.X版本的差别很大。ChannelRead是属于5.X版本的4.X版本没有这个方法,所以如果要用ChannelRead。可以更换5.X版本的Netty。

    netty4与spring集成

    4. **ChannelHandler 配置**: ChannelHandler 是 Netty 中处理网络事件的核心组件。在 Spring 集成中,可以创建一个 ChannelHandlerContext 的工厂类,该工厂由 Spring 管理,并在需要时为每个新建的 Channel 提供 ...

    netty+4G DTU

    在本文中,我们将深入探讨 Netty 如何与 4G DTU 设备结合,以及如何构建基于 Java 的物联网(IoT)解决方案。 4G DTU,全称 4G 数据终端单元,是一种利用 4G 移动通信技术进行数据传输的设备。它通常用于远程监控、...

    netty4 api 中文

    这个“netty4 api 中文”压缩包包含的是Netty 4.1版本的中文API文档,对于Java开发者来说,是学习和使用Netty的重要参考资料。 Netty 的核心设计理念是基于Reactor模式,这种模式在处理并发I/O操作时能显著提高效率...

    transport-netty4-client-5.5.1-API文档-中英对照版.zip

    赠送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...

    netty4 in action

    《Netty 4 in Action》是一本专注于Netty框架的权威指南,专为那些希望深入理解和使用Netty构建高性能、高可靠性的网络应用的开发者而编写。Netty是由JBOSS组织开发的一个开源项目,它提供了一个高效、灵活且可扩展...

    transport-netty4-client-6.3.0-API文档-中文版.zip

    赠送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中文用户手册

    Netty4是该框架的最新版本,于2016年3月份更新,提供了用户手册以方便开发者学习和使用。 用户手册首先介绍了 Netty 的架构总览,强调了 Netty 在解决网络编程中通用问题时的高效性。Netty 采用了拦截链模式的事件...

    netty4 中文学习资料

    这个“netty4 中文学习资料”压缩包可能是包含一系列关于 Netty 4 的教程、文档、案例分析或者代码示例,旨在帮助用户深入理解和掌握这一强大的网络通信库。 Netty 4 相比于之前的版本,引入了许多改进和新特性,...

    SMSGate-netty4.zip

    《基于Netty4的CMPP协议解析与网关管理》 在信息技术日新月异的今天,短信服务作为企业与用户沟通的重要桥梁,其后台处理技术也在不断发展。本文将深入探讨一个利用Netty4框架实现的CMPP(China Mobile Peer-to-...

    netty4 sources 源码

    这个“netty4 sources 源码”指的是Netty 4.x 版本的源代码,其中4.0.33.Final是特定的版本号。源码分析对于理解Netty的工作原理、优化性能以及定制化开发非常有帮助。 Netty 的核心特性包括: 1. **异步事件驱动*...

    netty4-demos

    这个“netty4-demos”项目显然包含了关于 Netty 4 的一系列示例,帮助开发者理解并应用 Netty 框架。 在深入探讨 Netty 知识点之前,先来理解一下什么是 Netty。Netty 是由 JBoss 提供的一个开源项目,它提供了对 ...

    Netty4 使用

    文件"12345.txt"可能是Netty通信过程中使用到的数据样本或配置信息,而"Netty4"可能是包含源代码、测试用例或其他相关资源的目录。具体用途可能需要根据文件内容来解读。 总的来说,Netty 4提供了一套强大且灵活的...

    netty4完整配置及实例

    在本文中,我们将深入探讨 Netty 4 的完整配置以及如何通过实例来理解和应用它。 1. **Netty 4 版本差异**: Netty 的不同版本可能在API、性能优化或新特性上有所变化。例如,Netty 4.x 引入了更多的Java 8特性和...

    netty 4 demo

    这个“netty 4 demo”是基于Netty 4的一个示例项目,出自《Netty权威指南》这本书,旨在帮助开发者更好地理解和应用Netty框架。 在Netty 4中,主要的改进包括: 1. **Java 7和8的支持**:Netty 4全面支持Java 7和8...

    transport-netty4-client-5.5.1-API文档-中文版.zip

    赠送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...

    netty4服务端客户端实例

    在本文中,我们将深入探讨如何利用Netty 4构建一个简单的服务端和客户端实例,以及如何在IntelliJ IDEA 2018.1.3这个强大的Java开发环境中设置和运行这些实例。 首先,Netty 4相较于之前的版本,引入了更多的性能...

    netty 4 jar包

    netty4 所有jar包,需要的可以下载

    Netty4.X demo

    Netty4.x的demo.版本4.0.28,配置tomcat7,jdk7.使用方法:导入的eclipse中,运行HelloServer.java,再运行HelloClient.java 这样客户端和服务器就可以通信了。希望对初次接触Netty的同学有所帮助!

    Netty4.x源码分析详解

    在深入分析 Netty 4.x 源码之前,我们首先需要了解其核心概念和架构。 Netty 的核心组件包括: 1. **ByteBuf**: 作为传统 ByteBuffer 的替代品,ByteBuf 提供了更高效且易用的内存管理机制,支持读写分离,避免了...

Global site tag (gtag.js) - Google Analytics