分析TCP粘包、拆包问题的产生原因:
1、应用程序write写入的字节大小大于套接字发送缓冲区的大小
2、进行MSS大小的TCP分段
3、以太网帧的payload大于MTU进行IP分片
主流的三种方案:
1、消息定长,例如每个报文的大小固定为200字节,如果不够,空位补空格
2、在包尾部增加特殊字符进行分割,例如回车等
3、将消息分为消息头和消息体,在消息头中包含表示消息总长度的字段,然后进行业务逻辑的处理
==================================================================================
Netty在包尾增加特殊字符( DelimiterBasedFrameDecoder)
Server:
package lqt.netty.code1;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled