Netty是一款网络应用开发框架,可以帮助用户开发高能的协议或者是网络应用程序,直接将软件部署到开发平台就可以配置服务通讯协议方式,可以设置请求方式,可以设置I/O通讯规则,可以配置异步事件处理方案,让用户在配置TCP通讯和配置处理异步事件规则的时候更方便;Netty功能丰富,可以处理多线程请求数据,可以配置多种数据传输通信方案,可以快速设置服务端的数据处理功能和通讯功能,帮助用户快速和构建NIO客户端的功能,提升整体处理数据的能!
Netty软件功能
Netty是 一个异步事件驱动的网络应用程序框架,
用于快速开发可的高能协议和客户端。
Netty是一个NIO客户端框架,可快速轻松地开发网络应用程序,例如协议和客户端。它极大地简化和简化了网络编程,例如TCP和UDP套接字。
“快速简便”并不意味着最终的应用程序将遭受可或能问题的困扰。Netty经过精心设计,结合了许多协议(例如FTP,TP,HTTP以及各种基于二进制和文本的旧式协议)的实施经验。结果,Netty成功地找到了一种无需妥协即可轻松实现开发,能,稳定和灵活的方法。
设计
适用于各种传输类型的统一API-阻塞和非阻塞套接字
基于灵活且可扩展的事件模型,可将关注点明确分离
高度可定制的线程模型-单线程,一个或多个线程池,例如SEDA
真正的无连接数据报套接字支持(从3.1开始)
Netty软件特色
1、便于使用
记录良好的Javadoc,用户指南和示例
没有其他依赖关系,JDK 5(Netty 3.x)或6(Netty 4.x)就足够了
注意:某些组件(例如HTTP / 2)可能有更多要求。
2、能
更高的吞吐量,更低的延迟
减少资源消耗
减少不必要的内存复制
3、安全
完整的SSL / TLS和StartTLS支持
Netty使用说明
编写丢弃
世界上最简单的协议不是“ Hello,World!”。但是DISCARD。这是一个协议,它丢弃任何收到的数据而没有任何响应。
要实现该DISCARD协议,您唯一需要做的就是忽略所有接收到的数据。让我们直接从处理程序实现开始,该实现处理Netty生成的I / O事件。
1、DiscardServerHandler扩展ChannelInboundHandlerAdapter,这是的实现ChannelInboundHandler。ChannelInboundHandler提供了可以覆盖的各种事件处理程序方法。现在,仅扩展ChannelInboundHandlerAdapter而不是自己实现处理程序接口就足够了。
2、我们在channelRead()这里重写事件处理程序方法。每当从客户端接收到新数据时,就使用接收到的消息来调用此方法。在此示例中,接收到的消息的类型为ByteBuf。
3、为了实现DISCARD协议,处理程序必须忽略收到的消息。ByteBuf是一个引用计数对象,必须通过该release()方法显式释放。请记住,释放任何传递给处理程序的引用计数对象是处理程序的责任。通常,channelRead()处理程序方法的实现如下:
4、该exceptionCght()事件处理方法被调用,可抛出异常时被提出的Netty由于I / O错误或由处理器实现,由于在处理事件引发的异常。在大多数情况下,应该记录捕获的异常,并在此处关闭其关联的通道,尽管此方法的实现可能会有所不同,具体取决于您要处理特殊情况时要采取的措施。例如,您可能想在关闭连接之前发送带有错误代码的响应消息。
到现在为止还挺好。我们已经实现了DISCARD的前半部分。现在剩下的就是编写使用main()来启动的方法DiscardServerHandler。
5、查看接收到的数据
现在,我们已经编写了第一台,我们需要测试它是否确实有效。测试它的最简单方法是使用telnet命令。例如,您可以telnet localhost 8080在命令行中输入并输入一些内容。
但是,我们可以说工作正常吗?我们真的不知道这是因为它是一个废弃。您根本不会得到任何回应。为了证明它确实有效,让我们修改以打印收到的内容。
我们已经知道,channelRead()每当收到数据时都会调用该方法。让我们将一些代码放入channelRead()方法中DiscardServerHandler:
这个低效的循环实际上可以简化为: .out.pntln(in.toStng(io.netty.util.CharsetUtil.US_ASCII))
或者,您可以在in.release()这里进行。
如果再次运行telnet命令,您将看到打印收到的内容。
丢弃的完整源代码位于io.netty.example.discard分发包中。
近期热门