Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PrintStream没有';t打印 in=new BufferedReader(新的InputStreamReader(client.getInputStream()); out=新的DataOutputStream(client.getOutputStream()); ps=新打印流(输出); 公开募捐{ 弦线; 试一试{ while((line=in.readLine())!=null&&line.length()>0){ System.out.println(“获取标题行:“+行”); } ps.println(“HTTP/1.0 200 OK”); }捕获(IOE异常){ //TODO自动生成的捕捉块 e、 printStackTrace(); } ps.println(“内容类型:text/html\n\n”); ps.println(“你好”); }_Java_Printstream - Fatal编程技术网

Java PrintStream没有';t打印 in=new BufferedReader(新的InputStreamReader(client.getInputStream()); out=新的DataOutputStream(client.getOutputStream()); ps=新打印流(输出); 公开募捐{ 弦线; 试一试{ while((line=in.readLine())!=null&&line.length()>0){ System.out.println(“获取标题行:“+行”); } ps.println(“HTTP/1.0 200 OK”); }捕获(IOE异常){ //TODO自动生成的捕捉块 e、 printStackTrace(); } ps.println(“内容类型:text/html\n\n”); ps.println(“你好”); }

Java PrintStream没有';t打印 in=new BufferedReader(新的InputStreamReader(client.getInputStream()); out=新的DataOutputStream(client.getOutputStream()); ps=新打印流(输出); 公开募捐{ 弦线; 试一试{ while((line=in.readLine())!=null&&line.length()>0){ System.out.println(“获取标题行:“+行”); } ps.println(“HTTP/1.0 200 OK”); }捕获(IOE异常){ //TODO自动生成的捕捉块 e、 printStackTrace(); } ps.println(“内容类型:text/html\n\n”); ps.println(“你好”); },java,printstream,Java,Printstream,程序运行时没有错误,ps.println不会向浏览器打印任何内容。 知道为什么吗?你试过冲这条小溪吗?在没有任何其他信息的情况下,我猜您的PrintStream正在存储字符,但实际上并没有输出它们(为了提高效率) 有关更多信息,请参阅。您有几个问题。 第一:根据HTTP标准: 请求行和标题必须全部以结尾(即,回车符后跟换行符) 所以,您需要发送“\r\n”字符以终止行 此外,您正在使用带有“\n”字符的println函数。Println还将在字符串末尾添加换行符 因此,您需要更改这些行: in

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

你试过冲这条小溪吗?在没有任何其他信息的情况下,我猜您的
PrintStream
正在存储字符,但实际上并没有输出它们(为了提高效率)

有关更多信息,请参阅。

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

请求行和标题必须全部以结尾(即,回车符后跟换行符)

所以,您需要发送“\r\n”字符以终止行

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

因此,您需要更改这些行:

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>");
}


还有,别忘了冲水

客户机
对象来自哪里?将DataOutputStream和PrintStream一起使用没有意义。您可以删除DataOutputStream。我删除了DataOutputStrem,但它现在不起作用…请注意“关闭流。这是通过刷新流然后关闭底层输出流来完成的。”JavaDoc由Oracle引用,emphasis由我强调。public void run(){String line;try{while((line=in.readLine())!=null&&line.length()>0{System.out.println(“get header line:+line”);}out.println(“HTTP/1.0 200 OK\r\n”);}catch(IOException e){//TODO自动生成的catch块e.printStackTrace();}out.println(“内容类型:text/html\r\n\r\n”);out.println(“你好”);out.println(“2222”);out.flush();}@Andrew-是的。但是我没有把close()带到讨论中,因为我不清楚流是否应该关闭。@BrianAgnew在输出字符串以
结尾后,似乎应该这样做。之后没有任何(有效的)东西可以添加。;)它有助于添加此。。我应该如何使用flush()?我应该使用close()吗?只需使用ps.flush();当你完成你的回答。如果您不打算支持HTTP保持活动状态功能,您可以立即关闭连接。关于ps.printlnIt的另一个问题不涉及新行
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");