Netty是JBOSS提供的Java开源框架。NETTY提供基于事件驱动的网络应用程序的异步网络应用程序框架,以快速发展高性能和高可靠性网络IO Programss.netty是基于Nio的网络编程框架。使用Netty可以帮助您快速开发网络应用程序,这相当于简化和处理Nio的开发过程。那么传统NIO的缺点是什么?
Nio的缺点:1。创建一个空的Maven项目来引入Netty依赖性。只要版本为4.xxx,请勿使用5.xx版本,5.xx版本是问题的问题
2.创建服务器和服务器处理器NetTychatserverhandler.Class
3.创建客户端和客户端处理器NetTyChatClientHandler.Class
4.首先测试服务器,然后启动多个客户端,在一个客户端上发送消息,在另一个客户端接收消息。这是一个简单的小组聊天,可以打开多个客户端进行测试以进行测试
它可以理解为EventloopGroup中的工作线程,但实际上不是线程。它包含一个控制线程生命周期的线程
无论是在客户端还是服务器上,我们要做的第一步是创建一个EventloopGroup,但是服务器需要创建两个,并且客户端只需要一个。您可以将其理解为线程池,即Eventloop的集合。eventloop可以理解为线程。那么服务器为什么要创建两个EventloopGroup So -called thread Pools?
在NIO编程中,有一个选择器选择器,该选择器具有将注册到选择器频道的线程。只要有IO事件,IO事件就会移交给相应的线程以处理它。因此,在上述演示中
例如,您的老板是老板组,员工是WorkerGroup。老板负责将需求连接到外部,如果有需求,他将向员工提供需求。。
它们是ServerBootstrap和Client的指导类别(Bootstrap,负责启动整个Netty服务。Netty),汽车可以正常运行。
Nio提供了一个缓冲缓冲区,那么为什么Netty自己做一个Bytebuf?
Nio的缓冲区操作:
这很复杂吗?简而言之,如果我绝对不想使用如此复杂的API进行编程,并且程序问题越复杂,程序问题就越复杂,并且NIO计划的效果越好,您必须非常熟悉Nio,您必须非常熟悉Nio
Netty Bytebuf:
客户端发送了一条消息,服务器接收到要执行业务处理的消息,并且Netty中的消息的业务处理位于ChannelHandler中,服务器处理器(NetTyChatserverHandler.Class)和客户端处理器(NetTyChatClientHanderr.Class),我们可以自定义ChannelHandler,然后在处理器中实现消息处理。简而言之,这是一个句子:接收消息,消息的业务处理已在此组件中实现
在Netty,我们可以定义多个事件处理器处理程序。该消息将在一系列处理程序处理器之后到达服务器。整个过程将类似于责任链模式。如下所示,一系列处理器处理与接收数据的顺序相反
ChannelPipipeLine可以将其理解为管道,其中包含多个处理程序。该事件将流过管道中的每个处理程序进行处理
Netty的频道将进一步封装Nio的频道
ChannelHandLercontext保留了频道的上下文,同时关联了频道手。仅通过ChannelhadlerContext,ChannelHandler才能交互
Netty中的iOS是异步的,因此,如果您是异步的,则将返回将来将来将来获得返回值的对象,即未来。通过ChannEneldure,我们可以知道IO是否成功,是否已完成,是否已取消等等,例如服务,例如服务结局成功
频道节省了许多参数,允许我们
原始:https://juejin.cn/post/7098183894482026533