不想侮辱小白 2021-07-20 14:30 采纳率: 0%
浏览 82

Netty的MessageToByte中写出大量数据时发生异常

背景:
我现在需要完成文件的传输(含本地/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使用者答疑指导,相互交流

  • 写回答

1条回答 默认 最新

  • 关注

    需要分段处理,一次性处理那么多数据肯定会出问题的。

    评论

报告相同问题?

问题事件

  • 创建了问题 7月20日

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献