文章目录前言一、粘包与半包1.1、现象分析1.1.1、粘包、半包情况分析1.1.2、滑动窗口、MSS限制、Nagle算法介绍1.2、粘包、半包现象复现1.2.1、粘包复现1.2.2、半包复现1.3、解决方案①短链接(连接、停止作为边界)②定长解码器(指定字节长度解码)③行解码器(分割符解决)④LTC解码器(基于长度字段的帧解码器,长度+内容组成)四个基础字段分析实际案例二、协议设计与解析2.1、redis协议示例2.2、HTTP协议示例2.2.1、认识HttpServerCodec2.2.2、案例2.3、自定义协议2.3.1、自定义协议要求2.3.2、自定义消息对象(编解码器、消息抽象类、具体消息类)2.3.3、案例测试(自定义编解码测试、半包问题出现及解决)2.4、@Sharable:可共享handler(引出+案例demo)前言本文是付费专栏《Java后端开发从入门到进阶》的配套文章,所属阶段与专题为「阶段四:Java主流框架应用 / 4.5 Netty」。掌握了组件之后,绕不开的一个现实问题就是:TCP 是字节流,一条消息的边界并不天然存在。专栏介绍:适合 Java 初学者及希望系统查漏补缺的开发者。专栏不仅讲“怎么用”,还会深入源码与底层原理,结合真实开发场景和代码案例,帮助你建立完整的 Java 技术知识体系。本文先复现并解释黏包与半包的成因,再对比短链接、定长解码器、行解码器与 LengthFieldBasedFrameDecoder 等解决方案,最后落到自定义协议的设计与编解码实现,为后续的聊天室与 RPC 案例打好基础。本文所属付费专栏目录:Java后端开发从入门到进阶整体专栏目录汇总netty笔记汇总:Netty学习指南(资料、文章汇总)根据黑马程序员netty视频教程学习所做笔记,部分内容图例来源黑马笔
阅读完成 · 觉得有帮助?