我正在使用Java开发一个简单的Web服务器应用程序。一切都很好,但是当http响应或html文档发送到Firefox或chrome浏览器等浏览器时,直到输出流或套接字关闭之前不会显示任何内容。有没有办法强制浏览器在不关闭流的情况下显示结果?或者我的代码有任何问题吗?
请注意,http 响应标头及其正文是正确的(内容长度),但浏览器仍在加载并且从未显示任何内容。
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();}
}
在java中,无论何时何地,只要你从任何流中读取。您应该关闭该流。然后,只有您才能从您创建的字节数组中获取数据。在此代码中,关闭该流并没有错。