netty server解决
1、什么是粘包/拆包 一般所谓的TCP粘包是在一次接收数据不能完全地体现一个完整的消息数据。TCP通讯为何存在粘包呢?主要原因是TCP是以流的方式来处理数据,再加上网络上MTU的往往小于在应用处理的消息数据,所以就会引发一次接收的数据无法满足消息的需要,导致粘包的存在。处理粘包的唯一方法就是制定应用层的数据通讯协议,通过协议来规范现有接收的数据是否满足消息数据的需要。 2、解决办法 2.1、 消息定长 ,报文大小固定长度,不够空格补全,发送和接收方遵循相同的约定,这样即使粘包了通过接收方编程实现获取定长报文也能区分。 2.2、 包尾添加特殊分隔符 ,例如每条报文结束都添加回车换行符(例如FTP协议)或者指定特殊字符作为报文分隔符,接收方通过特殊分隔符切分报文区分。 2.3、 将消息分为消息头和消息体 ,消息头中包含表示信息的总长度(或者消息体长度)的字段 3、netty server端设置特殊分隔符 注意:分隔符一定要在数据处理的handler之前指定 @Component public class NettyServer { @Value("${netty.server.port}") private int port; /** * 启动 netty server * @throws InterruptedException */ public void start() {