本文主要是介绍Netty源码解析8-ChannelHandler实例之CodecHandler,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
编解码处理器作为Netty编程时必备的ChannelHandler,每个应用都必不可少。Netty作为网络应用框架,在网络上的各个应用之间不断进行数据交互。而网络数据交换的基本单位是字节,所以需要将本应用的POJO对象编码为字节数据发送到其他应用,或者将收到的其他应用的字节数据解码为本应用可使用的POJO对象。这一部分,又和JAVA中的序列化和反序列化对应。幸运的是,有很多其他的开源工具(protobuf,thrift,json,xml等等)可方便的处理POJO对象的序列化,可参见这个链接。
在互联网中,Netty使用TCP/UDP协议传输数据。由于Netty基于异步事件处理以及TCP的一些特性,使得TCP数据包会发生粘包现象。想象这样的情况,客户端与服务端建立连接后,连接发送了两条消息:
+------+ +------+
| MSG1 | | MSG2 |
+------+ +------+
在互联网上传输数据时,连续发送的两条消息,在服务端极有可能被合并为一条:
+------------+
| MSG1 MSG2 |
+------------+
这还不是最坏的情况,由于路由器的拆包和重组,可能收到这样
这篇关于Netty源码解析8-ChannelHandler实例之CodecHandler的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!