背景:
我现在需要完成文件的传输(含本地/FTP等),由于需要对文件内容进行分段加密也文件较大,因此不能采用Chunked相关方法实现。
当前实现:
在connect获取到channel后,向其中写入文件集合List。紧接着根据Netty的handler配置将首先进入到自定义的MessageToByte。在encode方法中,我遍历集合,分别拿到文件输入流,然后每读一段就进行一次发送:具体过程如下
while(true){
if(ctx.channel.isWritable){
ctx.writeAndFlush冲刷该ByteBuf。
break;
}
}
问题现象:
小文件时不会产生任何问题,但是当文件内容很大时(如1G甚至更大),ctx.channel.isWritable就一直返回false。
如果不加此判断,尽管源端提示发送完成,但实际上通过wireshark抓包来看,并没有发送完。
期待Netty使用者答疑指导,相互交流