我正在尝试从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的默认行为,那么我们还有其他方法以更好的方式实现它吗?