`
youyu4
  • 浏览: 441845 次
社区版块
存档分类
最新评论

java Netty 之 白话概念

 
阅读更多

java Netty 之 白话概念

 

 

ChannelEvent

 


          
 

 

      先说这个ChannelEvent,因为Netty是基于事件驱动的,就是我们上文提到的,发生什么事,就通知"有关部门"。所以,不难理解,我们自己的业务代码中,一定有跟这些事件相关的处理。在样例代码,我们处理的事件,就是channelConnected。以后,我们还会处理更多的事件。

 

 

      ChannelEvent是和这个Channel相关的IO事件和请求,会由各个ChannelHandler来处理。事件分为上行和下行两种:

 

  • 当服务器从客户端收到一个消息,那么与之相关的就是一个上行事件(upstream event),流水线中的UpstreamChannelHandler会处理它。
  • 如果服务要回应这个客户端,那么与响应消息对应的就是下行事件,pipeline中的DownstreamChannelHandler会处理。站在客户端角度同样很容易理解。

上行事件通常是入站操作(inbound operations)的结果,如 InputStream.read(byte[]),下行事件通常是请求出站操作( outbound operations)比如 OutputStream.write(byte[]), Socket.connect(SocketAddress), and Socket.close()。

 

 

上行事件及发生时机:



 
对于可以有子通道的Channel(如ServerSocketChannel)而言可以有下面俩事件。



 

下行事件及发生时机:



 

 

 

 

ChannelPipeline


        
   

      Pipeline,翻译成中文的意思是:管道,传输途径。也就是说,在这里他是控制ChannelEvent事件分发和传递的。事件在管道中流转,第一站到哪,第二站到哪,到哪是终点,就是用这个ChannelPipeline 处理的。比如:开发事件。先给A设计,然后给B开发。这里最主要工作的就是ChannelPipelineFactory。

 

 

 

 

ChannelHandler

 

      刚说Pipeline负责把事件分发到相应的站点,那么这个站点在Netty里,就是指ChannelHandler。事件到了ChannelHandler这里,就要被具体的进行处理了,我们的样例代码里,实现的就是这样一个处理事件的“站点”,也就是说,你自己的业务逻辑一般都是从这里开始的。其实说白了,ChannelHandler就是Filter,请求经过多个Filter,就能到达我们业务逻辑ChannelHandler。

 

 

下面是一个流程图,请求从下面发送出来,经过UpStream Handler,到了业务逻辑层执行完后,通过DownStream Handler返回给客户端。说白了,


          
 

注意:

我们可以建自己的ChannelHandler,要继承SimpleChannelHandler。

 

 

 

 

Channel



 

有了个部门的协调处理,我们还需要一个从整体把握形势的,所谓“大局观”的部门,channel。

 

channel,能够告诉你当前通道的状态,是连同还是关闭。获取通道相关的配置信息。得到Pipeline等。是一些全局的信息。Channel自然是由ChannelFactory产生的。Channel的实现类型,决定了你这个通道是同步的还是异步的(nio)。

 

 

 

参考:

http://blog.csdn.net/kobejayandy/article/details/11493979

http://www.it165.net/pro/html/201207/3142.html

  • 大小: 21.1 KB
  • 大小: 82.2 KB
  • 大小: 18.6 KB
  • 大小: 39.3 KB
  • 大小: 17.5 KB
  • 大小: 80.7 KB
  • 大小: 14.8 KB
分享到:
评论

相关推荐

    基于 Java Netty实现的可用于内网穿透的代理工具.zip

    基于 Java Netty实现的可用于内网穿透的代理工具.zip基于 Java Netty实现的可用于内网穿透的代理工具.zip基于 Java Netty实现的可用于内网穿透的代理工具.zip基于 Java Netty实现的可用于内网穿透的代理工具.zip基于...

    JAVA netty 获取串口数据并且下发数据

    Java Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在标题中提到的“JAVA Netty 获取串口数据并且下发数据”,这意味着我们将探讨如何利用Netty来处理串行...

    基于java netty的udp客户端声呐数据对接

    Java Netty是一个高性能、异步事件驱动的网络应用程序框架,常用于开发高效的网络服务,包括TCP、UDP等网络协议的应用。在"基于Java Netty的UDP客户端声呐数据对接"项目中,我们主要关注如何利用Netty处理UDP通信,...

    java netty权威指南完整版带目录

    2. **Netty的基本概念** - 事件驱动模型:Netty采用基于事件的模型,通过EventLoop(事件循环)处理I/O事件,提高了并发性能。 - ByteBuf:Netty的内存管理机制,比Java的ByteBuffer更高效,支持零拷贝。 - ...

    Java Netty基于对象数据传输Demo

    Java Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个"Java Netty基于对象数据传输Demo"应该是演示了如何使用Netty进行对象序列化和反序列化,以便在网络...

    netty-4.1_javaNetty_netty_服务器_

    Netty 是一个基于 Java 的高性能、异步事件驱动的网络应用程序框架,专为开发协议服务器和客户端而设计。它的核心是基于 NIO(非阻塞 I/O)模型,提供了丰富的 API 和高度可定制的组件,使得开发者能够快速、高效地...

    c++客户端和java(Netty)服务器端tcp通讯

    本话题将探讨如何使用C++客户端与Java(通过Netty框架)服务器端实现TCP通讯,并涉及数据序列化工具Protocol Buffers(protobuf)在两者之间的交互。 首先,TCP(传输控制协议)是一种面向连接的、可靠的、基于字节...

    java应用netty服务端和客户端

    在实际的Netty应用中,你可能还会遇到以下概念: - **ByteBuf**:Netty的缓冲区,高效且可复用,用于数据读写。 - **Decoder** 和 **Encoder**:用于数据的解码和编码,比如将接收到的字节流转换为业务对象,或将...

    Java Netty 分布式开发 框架

    Netty的架构设计包含了以下几个核心概念: 1. EventLoop(事件循环):负责监听网络事件并执行相应的回调函数。在Netty中,一个EventLoop通常会处理多个连接,即实现了一个连接对应一个事件处理线程的模型。这种...

    JAVA版基于netty的物联网高并发智能网关.zip

    JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA...

    基于Java的netty-mqtt MQTT 3.1.1协议服务端与客户端设计源码

    netty-mqtt是一个基于Java开发的MQTT 3.1.1协议服务端与客户端,包含113个文件,其中包括87个Java源文件、8个XML文件、7个Iml文件、3个YAML文件、3个JKS文件、2个Factories文件、1个LICENSE文件和1个Markdown文件。...

    java netty通信

    Channel是Netty的核心概念,代表一个网络连接,可以用来读写数据。Handler是处理I/O事件的组件,通过ChannelPipeline进行链式调用,实现业务逻辑。 3. **ByteBuf** Netty的ByteBuf是代替Java NIO ByteBuffer的,...

    Netty实现Java服务端和C#客户端联通

    标题中的“Netty实现Java服务端和C#客户端联通”是指使用Netty作为Java服务器框架,与C#客户端(使用DotNetty库)进行通信的一种技术实现。这涉及到跨平台的网络通信,以及两个不同编程语言间的交互。 Netty是Java...

    java netty需要的包

    java netty需要的包。。。。。。。。。。。。java netty需要的包,netty-3.2.10.Final.jar一个就行

    java实现基于netty 的udp字节数据接收服务

    在Java编程环境中,Netty是一个高性能、异步事件驱动的网络应用程序框架,常用于构建可伸缩、高并发的服务器。本示例关注的是如何利用Netty实现一个基于UDP(User Datagram Protocol)的数据接收服务,这在需要进行...

    JavaNetty客户端与服务器

    然而,Netty的强大之处还在于它的高度可扩展性和丰富的功能,如流式API、零拷贝、多协议支持、以及对异步编程的良好支持。在更复杂的网络应用中,开发者可以利用这些特性来优化性能、提高代码可维护性。

    JAVA netty完整示例代码

    JAVA netty完整示例代码。里面包括整个项目和所需的JAR包。示例以:TCP/IP自定义报文协议进行解析分析,基于帧头HEAD_DATA=0x76解析过程的示例代码,并对数据进行粘包分离的处理。粘包处理方式有两种:1.自定义报文...

    java netty学习资料

    这个学习资料包“java netty学习资料”很可能是为了帮助开发者理解和掌握Netty的核心概念和实践应用。 在Netty中,定义消息协议通讯是构建网络应用的关键步骤。Netty提供了一种灵活的方式来定义自定义的编解码器,...

    基于Java Netty 实现的多人联机游戏(多人对战)的客户端和服务器端.zip

    毕设:基于Java Netty 实现的多人联机游戏(多人对战)的客户端和服务器端.zip 毕设:基于Java Netty 实现的多人联机游戏(多人对战)的客户端和服务器端.zip 毕设:基于Java Netty 实现的多人联机游戏(多人对战)...

    基于java的netty实现的可靠udp网络库(kcp算法),包含fec实现,可用于游戏,视频,加速等业务

    Java KCP是一个基于Java语言,利用Netty框架实现的可靠UDP网络库,它引入了KCP协议和Forward Error Correction (FEC)技术,为需要高效、低延迟传输的应用提供了强大的解决方案。KCP协议最初由Mars(巫师)设计,其...

Global site tag (gtag.js) - Google Analytics