如何正确管理HTTP连接?

时间:2017-01-28 17:06:08

标签: java html sockets http http-protocols

我想知道如何正确管理以下HTTP响应,因为我发送给客户端的文件包含代表未来HTTP请求的其他链接文件。

我知道我可以关闭PrintWriter,它会向客户端表明正文已完成,但如果我这样做,我看不出如何在“first.html”中接收对链接页面的后续请求。我试图包含内容长度标题,但似乎我可能已经错误地计算了长度,因为任何尝试在发送“first.html”阻止/停止后从输入流中读取。这告诉我客户端没有意识到first.html文件已完成发送。我已经阅读了RFC 2616,但坦率地说,如果没有正确的例子就无法理解它。谈到协议,我是一个真正的孩子,所以任何帮助都会受到赞赏!

public static void main(String[] args) throws Exception{
    ServerSocket serverSocket = new ServerSocket(80);
    Socket clientSocket = serverSocket.accept();
    BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 
    PrintWriter out = new PrintWriter(clientSocket.getOutputStream(),true);   

    String s;
    while (!(s = in.readLine()).isEmpty()) {
        System.out.println(s);
    }

    out.write("HTTP/1.0 200 OK\r\n");
    out.write("Content-Type: text/html\r\n");
    out.write("Content-Length: 1792\r\n");
    out.write("\r\n");


    File html = new File("/Users/tru/Documents/JavaScript/first.html");
    BufferedReader htmlreader =  new BufferedReader(new InputStreamReader(new FileInputStream(html)));

    int c;
    while((c = htmlreader.read()) > 0){
        out.write(c);
    }
}

0 个答案:

没有答案