浏览器在关闭其流之前不会显示响应

时间:2014-02-25 09:51:02

标签: java sockets http https stream

我正在使用Java开发一个简单的Web服务器应用程序。一切正常但是当http响应或html文档发送到浏览器(如Firefox或Chrome浏览器)时,在输出流或套接字关闭之前不会显示任何内容。有没有办法强制浏览器显示结果而不关闭流? 或者我的代码有问题吗?

请注意,http响应标头及其正文是正确的(content-lenght),但浏览器仍在加载,从不显示任何内容。

public void run()
{
    byte [] recbuf = new byte[16384]; //buffer 16KB
    int i = 0;
    try
    {
        while(CatServerSocket.isConnected())
        {
            i = CatServerSocket.getInputStream().read(recbuf,0,16384); //here 
            if(i<0)break;
            clientSocket.getOutputStream().write(recbuf,0,i);
            clientSocket.getOutputStream().flush();
            //if socket or output stream closed here, browser shows results
            System.out.println("INFO: " + i + " bytes recieved from CatServer!");
            System.out.println((new String(recbuf,0,i)));
        }
        System.out.println("ERROR: Connection to CatServer lost!");
    }
    catch(IOException e){e.printStackTrace();}
}

1 个答案:

答案 0 :(得分:0)

在任何地方的java中,无论何时从任何流中读取。你应该关闭那个流。然后,只有您才能从您创建的字节数组中获取数据。在这段代码中,关闭该流是没有错的。