1、netty在进行字节数组传输的时候,会出现粘包和分包的情况。当个数据还好,如果数据量很大。并且不间断的发送给服务器,这个时候就会出现粘包和分包的情况。
2、简单来说:channelBuffer在接收包的时候,会在当时进行处理,但是当数据量一大,这个时候数据的分隔就不是很明显了。这个时候会出现数据多了或者少了的情况
3、处理的方式,一般就是编解码。自己定义数据:数据长度+数据。这种简单的方式来实现。在server进行解密操作。
4、一般规定的数据格式必须包含:包头+长度+数据(包头的目的是用来判断数据是否是开始的时候)
5、具体的实现过程
a、客户端进行编码
package com.troy.application.buffer;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;public classClient {public static voidmain(String[] args) {try{
SocketChannel socketChannel=SocketChannel.open();
socketChannel.connect(new InetSocketAddress("localhost",9000));//需要发送的数据
String message = "hello";//这里的4代表message的长度所占字节
ByteBuffer byteBuffer = ByteBuffer.