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