# wally-netty-parent **Repository Path**: laiguiliang/wally-netty-parent ## Basic Information - **Project Name**: wally-netty-parent - **Description**: Netty 学习 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-01-23 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # netty5-00-parent Netty 学习,粘包/拆包,半包处理,编解码器,继承ByteToMessageDecoder类,自己处理半包消息 ## netty5-01-timer-simple 简单的示例代码 ## netty5-02-timer-pack client端for循环发送消息,出现TCP粘包问题 ## netty5-03-timer-solve 解决TCP粘包和拆包问题:LineBasedFrameDecoder和StringDecoder ## netty5-04-echo-simple 分隔符和定长解码器的应用示例 ### 区分消息方式 1. 消息长度固定,累计读取到长度总和为定长LEN的报文后,就认为读取到了一个完整的消息:将计数器置位,重新开始读取下一个数据报; 2. 将回车换行符作为消息结束符,例如:FTP协议,这种方式在文本协议中应用比较广泛; 3. 将特殊的分隔符作为消息的结束标志,回车换行符就是一种特殊的结束分隔符; 4. 通过在消息中定义长度字段来标识消息的总长度. ## 编解码 ### Java序列化 1. 无法跨语言 2. 序列化后的码流太大 3. 序列化性能太低 ### MessagePack 编解码 1. 编码高效,性能高 2. 序列化之后的码流小 3. 支持跨语言 ### 谷歌protobuf 1. 在谷歌内部长期使用,产品成熟度高 2. 跨语言、支持多种语言,包括C++、Java&Python 3. 编码后的消息更小,更加有利于存储和传输 4. 编解码的性能非常高 5. 支持不同协议版本的前向兼容 6. 支持定义可选和必选字段 ### JBoss Marshalling框架