Socket InputStream的第一个读取调用需要更多时间

时间:2018-01-24 06:08:31

标签: sockets inputstream

我正在尝试从Socket中获取inputstream中的字节,如下所示。

URL u = new URL("http://admdemo.triniti.com/tabimpl/jsp/basicjsp/logon.jsp");
Socket s = new Socket(u.getHost(), 80);
PrintWriter pw = new PrintWriter(theOutput, false);
pw.print("GET " + u.getFile() + " HTTP/1.0\r\n");
pw.print("Accept: text/plain, text/html, text/*\r\n");
pw.print("\r\n");
pw.flush();
InputStream in = s.getInputStream();
InputStreamReader isr = new InputStreamReader(in);
long time = System.currentTimeMillis();
int c;
while((c = isr.read()) != - 1)
{
    System.out.print("TIME taken to read byte : " (System.currentTimeMillis() - time));
}

执行时,第一个字节读取调用时间显示在~400-500ms左右,但所有后续读取调用都显示0ms。有人可以帮我解释为什么要花那么多时间吗? 如果这是java io的默认行为,那么我们还有其他方法以更好的方式实现它吗?

0 个答案:

没有答案