- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Netty 代码分析
Netty 代码分析 Posted by bucketli on 2010-09-25 Leave a comment (1) Go to comments Netty 提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、 高可靠性的网络服务器和客户端程序[官方定义],整体来看其包含了以下内容: 1.提供了丰富的协议编解码支持,2.实现自有的 buffer 系统,减少复制所带来 的消耗,3.整套 channel 的实现,4.基于事件的过程流转以及完整的网络事件响 应与扩展,5.丰富的 example。本文并不对 Netty 实际使用中可能出现的问题做 分析,只是从代码角度分析它的架构以及实现上的一些关键细节。 首先来看下最如何使用 Netty(其自带 example 很好展示了使用),Netty 普通使 用一般是通过 BootStrap 来启动,BootStrap 主要分为两类:1.面向连接(TCP) 的 BootStrap(ClientBootStrap 和 ServerBootstrap),2.非面向连接(UDP) 的 (ConnectionlessBootstrap)。 Netty 整体架构很清晰的分成 2个部分,ChannelFactory 和 ChannelPipelineFactory,前者主要生产网络通信相关的 Channel 实例和 ChannelSink 实例,Netty 提供的 ChannelFactory 实现基本能够满足绝大部分 用户的需求,当然你也可以定制自己的 ChannelFactory,后者主要关注于具体传 输数据的处理,同时也包括其他方面的内容,比如异常处理等等,只要是你希望 的,你都可以往里添加相应的 handler,一般 ChannelPipelineFactory 由用户自 己实现,因为传输数据的处理及其他操作和业务关联比较紧密,需要自定义处理 的 handler。 现在,使用 Netty 的步骤实际上已经非常明确了,比如面向连接的 Netty 服务端 客户端使用,第一步:实例化一个 BootStrap,并且通过构造方法指定一个 ChannelFactory 实现,第二步:向 bootstrap 实例注册一个自己实现的 ChannelPipelineFactory,第三步:如果是服务器端,bootstrap.bind(new InetSocketAddress(port)),然后等待客户端来连接,如果是客户端, bootstrap.connect(new InetSocketAddress(host,port))取得一个 future,这 个时候 Netty 会去连接远程主机,在连接完成后,会发起类型为 CONNECTED 的 ChannelStateEvent,并且开始在你自定义的 Pipeline 里面流转,如果你注册的 handler 有这个事件的响应方法的话那么就会调用到这个方法。在此之后就是数 据的传输了。下面是一个简单客户端的代码解读。 // 实例化一个客户端 Bootstrap 实例,其中 NioClientSocketChannelFactory 实例由 Netty 提供 ClientBootstrap bootstrap = new ClientBootstrap( new NioClientSocketChannelFactory( Executors.newCachedThreadPool(), Executors.newCachedThreadPool())); // 设置 PipelineFactory,由客户端自己实现 bootstrap.setPipelineFactory(new FactorialClientPipelineFactory(count)); //向目标地址发起一个连接 ChannelFuture connectFuture = bootstrap.connect(new InetSocketAddress(host, port)); // 等待链接成功,成功后发起的 connected 事件将会使 handler 开始 发送信息并且等待 messageRecive,当然这只是示例。 Channel channel = connectFuture.awaitUninterruptibly().getChannel(); // 得到用户自定义的 handler FactorialClientHandler handler = (FactorialClientHandler) channel.getPipeline().getLast(); // 从 handler 里面取数据并且打印,这里需要注意的是, handler.getF
您可能关注的文档
- LP133WH2-TLA2.pdf
- logistics02.ppt
- LP141WP2-TPA1.pdf
- Lord of the Flies 蝇王.pdf
- LP156WH4-TLN2.pdf
- LPC21XX系列寄存器大全.pdf
- LPR Videolaringoscopy.pdf
- LP156WH3-TPSH_Final_CAS_V1.0_.pdf
- LTA320AP02.pdf
- LTE-A CA introduction-V1.0.pdf
- neu.2009.1206.pdf
- Neurology and neurologic practice.pdf
- Neutralinos, Big Bang Nucleosynthesis and 6Li in Low-Metallicity Stars.pdf
- Neutrino Masses and Mixings in a Universal Seesaw Mass Matrix Model.pdf
- Neutron skin of 208 Pb in consistency with neutron star observations.pdf
- New Additions - Music Scores March 2002.pdf
- New cytotoxic diarylheptanoids from the rhizomes of Alpinia officinarum Hance.pdf
- New endophytic isolates of Muscodor albus, a volatile-antibiotic-producing fungus.pdf
- New England- USCF index.pdf
- New FOCUS results on charm mixing and CP violation.pdf
最近下载
- 高一数学(必修二)立体几何初步单元测试卷及答案.docx VIP
- “二次元经济”崛起背后的商业逻辑.docx VIP
- 【阶段测试】人教版数学六年级上册第一单元《分数乘法》单元测试卷27.doc VIP
- 中国谷子经济分析:从哪吒旋风看二次元IP衍生品市场崛起.pdf VIP
- 2025年全国高考山东省物理真题试卷(含答案).pdf
- 2025年人教版数学六年级上册单元测试卷-第一单元 分数乘法(含答案).pdf VIP
- 《不负'食'光拒绝浪费》班会课件.pptx VIP
- 部编本《一块奶酪》优质课公开课教案课堂教学实录.docx VIP
- DB13T 5448.3-2021 工业取水定额 第3部分:医药行业.docx VIP
- 山东省安装工程消耗量定额(2016).pdf
文档评论(0)