我在Java(和Jetty)中编写了一个代理。无论如何,它运作良好,但有时
...
final OutputStream realOs = res.getOutputStream();
...
InputStream is = url.openStream();
int i;
while ((i = is.read(buffer)) != -1) {
realOs.write(buffer, 0, i);
}
因IOException而失败。我注意到它主要发生在大型二进制文件中,即flash和Safari浏览器......
我很困惑......
答案 0 :(得分:2)
如果在您仍在写入套接字时关闭浏览器(或用户取消下载),则会发生这种情况。浏览器会关闭套接字,因此您的OutputStream
不再需要写入任何内容。
不幸的是,很难确定是否确实如此 - 在这种情况下这不是一个问题 - 或者是否存在更加阴险的事情。