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/htmlnn");
ps.println("<HTML> <HEAD>hello</HEAD> </HTML>");
}
该程序运行没有错误,ps.println 不会向浏览器打印任何内容。知道为什么吗?
你试过冲洗流吗?没有任何其他信息,我猜你的PrintStream
正在存储字符,但实际上并没有输出它们(为了提高效率(。
有关详细信息,请参阅 flush((。
你有几个问题。第一:根据HTTP标准:
请求行和标头必须全部以 (即,回车符后跟换行符(结尾。
因此,您需要发送"\r"字符来终止行。
此外,您正在使用带有""字符的 println 函数。Println 还会在字符串末尾添加换行符。
所以你需要改变这些行:
ps.println("HTTP/1.0 200 OK");
...
ps.println("Content-type: text/htmlnn");
自
ps.print("HTTP/1.0 200 OKrn")
ps.print("Content-type: text/htmlrnrn");
而且,不要忘记刷新((;