我想知道如何正确管理以下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);
}
}