- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Netty 用户手册
序言
本指南对Netty 进行了介绍并指出其意义所在。
1. 问题
现在,我们使用适合一般用途的应用或组件来和彼此通信。例如,我们常常使用一个HTTP
客户端从远程服务器获取信息或者通过web services 进行远程方法的调用。
然而,一个适合普通目的的协议或其实现并不具备其规模上的扩展性。例如,我们无法使用
一个普通的HTTP 服务器进行大型文件,电邮信息的交互,或者处理金融信息和多人游戏
数据那种要求准实时消息传递的应用场景。因此,这些都要求使用一个适用于特殊目的并经
过高度优化的协议实现。例如,你可能想要实现一个对基于AJAX 的聊天应用,媒体流或大
文件传输进行过特殊优化的HTTP 服务器。你甚至可能想去设计和实现一个全新的,特定
于你的需求的通信协议。
另一种无法避免的场景是你可能不得不使用一种专有的协议和原有系统交互。在这种情况下,
你需要考虑的是如何能够快速的开发出这个协议的实现并且同时还没有牺牲最终应用的性
能和稳定性。
2. 方案
Netty 是一个异步的,事件驱动的网络编程框架和工具,使用Netty 可以快速开发出可维护
的,高性能、高扩展能力的协议服务及其客户端应用。
也就是说,Netty 是一个基于NIO 的客户,服务器端编程框架,使用Netty 可以确保你快速
和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty 相当简化
和流线化了网络应用的编程开发过程,例如,TCP 和UDP 的socket 服务开发。
“快速”和“简单”并不意味着会让你的最终应用产生维护性或性能上的问题。Netty 是一个吸收
了多种协议的实现经验,这些协议包括FTP,SMPT,HTTP,各种二进制,文本协议,并经
过相当精心设计的项目,最终,Netty 成功的找到了一种方式,在保证易于开发的同时还保
证了其应用的性能,稳定性和伸缩性。
一些用户可能找到了某些同样声称具有这些特性的编程框架,因此你们可能想问Netty 又有
什么不一样的地方。这个问题的答案是Netty 项目的设计哲学。从创立之初,无论是在API
还是在其实现上Netty 都致力于为你提供最为舒适的使用体验。虽然这并不是显而易见的,
但你终将会认识到这种设计哲学将令你在阅读本指南和使用Netty 时变得更加得轻松和容
易。
第一章. 开始
这一章节将围绕Netty 的核心结构展开,同时通过一些简单的例子可以让你更快的了解Netty
的使用。当你读完本章,你将有能力使用Netty 完成客户端和服务端的开发。
如果你更喜欢自上而下式的学习方式,你可以首先完成 第二章:架构总览 的学习,然后再
回到这里。
1.1. 开始之前
运行本章示例程序的两个最低要求是:必威体育精装版版本的Netty 程序以及JDK 1.5 或更高版本。最
新版本的Netty 程序可在项目下载页下载。下载正确版本的JDK,请到你偏好的JDK 站点
下载。
这就已经足够了吗?实际上你会发现,这两个条件已经足够你完成任何协议的开发了。如果
不是这样,请联系Netty 项目社区,让我们知道还缺少了什么。
最终但不是至少,当你想了解本章所介绍的类的更多信息时请参考API 手册。为方便你的
使用,这篇文档中所有的类名均连接至在线API 手册。此外,如果本篇文档中有任何错误
信息,无论是语法错误,还是打印排版错误或者你有更好的建议,请不要顾虑,立即联系
Netty 项目社区 。
1.2. 抛弃协议服务
在这个世界上最简化的协议不是“Hello,world!”而是抛弃协议 。这是一种丢弃接收到的任何
数据并不做任何回应的协议。
实现抛弃协议(DISCARD protocol),你仅需要忽略接受到的任何数据即可。让我们直接
从处理器(handler)实现开始,这个处理器处理Netty 的所有I/O 事件。
[java] view plaincopy
1. package ty.example.discard;
2.
3. @ChannelPipelineCoverage(all)1
4. public class DiscardServerHandler extends SimpleChannelHandler {2
5.
6. @Override
7. public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
3
8. }
9.
10. @Override
1
文档评论(0)