我正在使用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();}
}
答案 0 :(得分:0)
在任何地方的java中,无论何时从任何流中读取。你应该关闭那个流。然后,只有您才能从您创建的字节数组中获取数据。在这段代码中,关闭该流是没有错的。