Servlet で 帯域制限
特定のファイルをServletでフィルターして帯域制限してみました。
int length = 1024 * 1024 / 8; // bps → byte/s のため 8で割る File file = new File("C:\tmp\test.avi"); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "inline; filename=" + file.getName()); BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream(), length); in = new BufferedInputStream(new FileInputStream(file), length); byte[] buff = new byte[length]; int i; while((i = in.read(buff, 0, length)) != -1){ long start = System.currentTimeMillis(); out.write(buff, 0, i); long diff = System.currentTimeMillis() - start; Thread.sleep(1000 - diff); }
こんな風にやると、
128K/s(1Mbps) に制限できます。