套接字奇怪的行为

时间:2017-02-10 11:59:52

标签: java sockets

使用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());

任何人都能解释一下吗?

0 个答案:

没有答案