0

考虑到我发送给客户端的文件包含代表未来 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);
    }
}
4

0 回答 0