package com.xiaoliu.handler; import com.xiaoliu.protocol.FilePacket; import com.xiaoliu.protocol.request.LoginPacket; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import lombok.extern.slf4j.Slf4j; import java.io.File; import java.io.FileOutputStream; import static com.xiaoliu.protocol.attribute.Attributes.userAttr; @Slf4j @ChannelHandler.Sharable public class FilePacketServerHandler extends SimpleChannelInboundHandler { @Override protected void channelRead0(ChannelHandlerContext ctx, FilePacket packet) throws Exception { File file = packet.getFile(); log.info("receive file from client: {}", file.getName()); LoginPacket loginPacket = ctx.channel().attr(userAttr).get(); if(loginPacket.isExec()){ return; } loginPacket.setExec(true); loginPacket.setFileName(file.getName()); loginPacket.setFileLength(packet.getFileLength()); loginPacket.setFileOutputStream(new FileOutputStream(new File("./service-receive-" + file.getName()))); // FileReceiveServerHandler.fileLength = file.length(); // FileReceiveServerHandler.outputStream = new FileOutputStream( // new File("./server-receive-" + file.getName()) // ); packet.setACK(packet.getACK() + 1); ctx.writeAndFlush(packet); } }