Mad*_*dhu 3 java streaming servlets
遵循这个主题. 流式传输java servlet中的大型文件.
是否有可能通过java找到当前机器中可用的总互联网带宽?
我想要做的是在通过servlet流式传输大型文件时,根据并行请求的数量和总带宽我试图减少每个请求的流的BUFFER_SIZE.合理?
有没有纯粹的java方式?(没有JNI)
也许您可以计算应用程序需要多长时间发送一个包(缓冲区).如果大于x毫秒,则使缓冲区变小.您可以使用原始bufferSize和其他值if (stop - start > 700).
这基于您注意到的主题:
ServletOutputStream out = response.getOutputStream();
InputStream in = [ code to get source input stream ];
String mimeType = [ code to get mimetype of data to be served ];
int bufferSize = 1024 * 4;
byte[] bytes = new byte[bufferSize];
int bytesRead;
response.setContentType(mimeType);
while ((bytesRead = in.read(bytes)) != -1) {
long start = System.currentTimeMillis();
out.write(bytes, 0, bytesRead);
long stop = System.currentTimeMillis();
if (stop - start > 700)
{
bufferSize /= 2;
bytes = new byte[bufferSize];
}
}
// do the following in a finally block:
in.close();
out.close();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2213 次 |
| 最近记录: |