这个示例是一个http server,经测试打开htm正常显示,下载几十兆也能下载,但是我下载几百兆文件时,报错如下:
RequestHandler: java.io.IOException: 由于系统缓冲区空间不足或列队已满,不能执行套接字上的操作。经我进一步查看,发现是ChannelIO.java中的
long transferTo(FileChannel fc, long pos, long len) throws IOException { return fc.transferTo(pos, len, sc);
}抛出异常错误~~~~
向各位请教一下,该如何解决这个问题,谢谢~~~~
RequestHandler: java.io.IOException: 由于系统缓冲区空间不足或列队已满,不能执行套接字上的操作。经我进一步查看,发现是ChannelIO.java中的
long transferTo(FileChannel fc, long pos, long len) throws IOException { return fc.transferTo(pos, len, sc);
}抛出异常错误~~~~
向各位请教一下,该如何解决这个问题,谢谢~~~~
建议,每个分组的最大长度为512个字节。
long pos = ... ; long len = ... ;
final long MAX_SIZE = 1<<19;//512K个字节
long curPos = pos;
while(curPos+MAX_SIZE<pos+len){
sc.transferTo(fc,curPos,MAX_SIZE);
curPos += MAX_SIZE;
}
sc.transferTo(fc,curPos,pos+len-curPos);
请各们高手继续帮忙解决一下,谢谢
不知是不是跟操作系统有关系