使用Socket遇到奇怪的行为。
这是我的代码:
private void processClientRequest(Socket clientSocket) throws IOException {
long start = System.nanoTime();
try (
final InputStream in = clientSocket.getInputStream();
final OutputStream out = clientSocket.getOutputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in))
) {
// System.out.println("input: " + reader.readLine());
out.write(("HTTP/1.1 200 OK\n\n<html>" +
"<head><link rel=\"icon\" type=\"image/gif\" href=\"data:image/gif;base64,R0lGODlhEAAQAIAAAAAAAAAAACH5BAkAAAEALAAAAAAQABAAAAIgjI+py+0PEQiT1lkNpppnz4HfdoEH2W1nCJRfBMfyfBQAOw==\" /></head>"+
"<body>SingleThreadedServer:" + System.currentTimeMillis() + "</body></html>").getBytes());
} finally {
clientSocket.close();
}
System.out.println("time spend: " + (System.nanoTime() - start) + " ns");
}
我正在使用浏览器发出请求。如果我不读inputStream
(评论reader.readLine()
),当我从浏览器发出请求时,我会收到此错误
localhost didn’t send any data. ERR_EMPTY_RESPONSE
在下一个请求服务器上正确响应。
SingleThreadedServer:1486727454378
等超出要求, 如果我取消注释这一行,那么所有工作都会有效。
System.out.println("input: " + reader.readLine());
任何人都能解释一下吗?