Practical Netty (4) 父子频道关系,频道与管道的关系
来源:互联网 发布:一切用数据说话啥意思 编辑:程序博客网 时间:2024/05/22 16:40
Practical Netty (4) 父子频道关系,频道与管道的关系
- 作者:柳大·Poechant(钟超)
- 邮箱:zhongchao.ustc#gmail.com(# -> @)
- 博客:Blog.CSDN.net/Poechant
- 微博:weibo.com/lauginhom
- 日期:June 10th, 2012
(下面这段话是完成本文后写的)我姑且将 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 thechannel. Once attached, the coupling between the channel and the pipelineis permanent; the channel cannot attach another pipeline to it nor detachthe 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
-
- Practical Netty (4) 父子频道关系,频道与管道的关系
- 频道
- 频道
- 频道
- 构架、框架、设计模式之间的关系简述-开发频道-架构-天极网
- bomb 多对多关系 查询问题:1)查询用户A所订阅的所有频道 2)查询订阅了频道B的所有用户
- 频道与菜单栏关联----频道界面
- 继承时候的父子关系
- for的父子进程关系
- 13.控制器的父子关系
- 父子页面间的关系
- 父子进程之间的关系
- Elasticsearch索引的父子关系
- 集合的父子类关系
- JQuery、AJAX与Javascript之间的父子关系
- JQuery、AJAX与Javascript之间的父子关系
- JQuery、AJAX与Javascript之间的父子关系
- Android基础 平面数据与父子关系的数据转换
- Linux字符驱动设备例子
- chkconfig命令详解
- maven POM.xml详解
- 使用vs2010搭建libreoffice openoffice UNO sdk开发环境(一)
- 为什么java.net.URLEncoder.encode方法要调用两次而不是一次呢?
- Practical Netty (4) 父子频道关系,频道与管道的关系
- Maven Nexus admin密码重置方法
- linux下python开发环境——安装Eclipse+PyDev
- ios 通过VOIP 实现后台操作
- 举头望明月,低头敲代码
- android笔记
- Ubuntu上Oracle VM VirtualBox安装和配置
- android4.0 avd模拟器的默认路径修改默认AVD的路径一般为系统用户目录下,WIN7下为C:\Users\Administrator\
- MySQL配置文件参数解释