2
in = new BufferedReader (new InputStreamReader(client.getInputStream()));
out = new DataOutputStream(client.getOutputStream());
ps = new PrintStream(out);

public void run() {
    String line;    

    try {
        while ((line = in.readLine()) != null && line.length()>0) {
            System.out.println("got header line: " + line);
        }
        ps.println("HTTP/1.0 200 OK");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    ps.println("Content-type: text/html\n\n");
    ps.println("<HTML> <HEAD>hello</HEAD> </HTML>");
}

该程序运行没有错误,并且 ps.println 不会向浏览器打印任何内容。知道为什么吗?

4

2 回答 2

2

你有几个问题。第一:根据HTTP标准:

请求行和标头都必须以(即,回车后跟换行符)结尾。

因此,您需要发送“\r\n”字符来终止行。

此外,您正在使用带有“\n”字符的 println 函数。Println 还将在字符串末尾添加换行符。

所以你需要改变这些行:

ps.println("HTTP/1.0 200 OK");
...
ps.println("Content-type: text/html\n\n");

ps.print("HTTP/1.0 200 OK\r\n")
ps.print("Content-type: text/html\r\n\r\n");

而且,不要忘记刷新();

于 2012-01-09T16:43:03.290 回答
2

您是否尝试过刷新流?没有任何其他信息,我猜您PrintStream正在存储字符,但实际上并没有输出它们(为了提高效率)。

有关更多信息,请参见flush()

于 2012-01-09T16:21:54.163 回答