在TCP协议中,数据流的传输是没有接线与分割的,数据块的划分根据缓冲区大小来决定,在数据包传输过程中,多个小数据包合并成一个大包进行传输,也可能一个数据包被划分成多个小包进行传输,这就是粘包与半包。可能性如下
产生原因:
通过添加数据解码器对数据进行拆分处理。
ch.pipeline().addLast(new LineBasedFrameDecoder(1024));
ByteBuf delimiter = Unpooled.copiedBuffer("&".getBytes());
ch.pipeline().addLast(new DelimiterBasedFrameDecoder(1024,c delimiter));
ch.pipeline().addLast(new FixedLengthFrameDecoder(1024));
ch.pipeline().addLast(new LengthFieldBasedFrameDecoder(Integer.MAX, 0, 4););
原文:https://www.cnblogs.com/nickhan/p/13222492.html