通过发送数据时同时发送数据长度,解决拆包粘包问题
自定义编码器、解码器
消息实体类:
public class MyMessage {
private int len;//发送内容的长度
private byte[] content;//发送的内容
public int getLen() {
return len;
}
public void setLen(int len) {
this.len = len;
}
public byte[] getContent() {
return content;
}
public void setContent(byte[] content) {
this.content = content;
}
}
服务端相关:
public class MyServer {
public static void main(String[] args) throws InterruptedException {
EventLoopGroup bossGroup=new NioEventLoopGroup(1);//处理连接请求
EventLoopGroup workerGroup=new NioEventLoopGroup();//默认线程数量为cpu核数的两倍,处理业务
try {
ServerBootstrap bootstrap=new ServerBootstrap();//创建服务器端的启动对象
bootstrap.group(bossGroup,workerGroup)
.channel(NioServerSocketChannel.class)
.option(ChannelOption.SO_BACKLOG,1024)
.childHandler(new ChannelInitializer<SocketChannel>() {
protected void initChannel(SocketChannel socketChannel) {
ChannelPipeline channelPipeline=socketChannel.pipeline();