私のクライアントは Web ブラウザで、次の URL を使用して myserver にリクエストを送信します。
http://localhost
これはサーバー側のコードです。問題は、ServingThread
クラスの run メソッドにあります。
class ServingThread implements Runnable{
private Socket socket ;
public ServingThread(Socket socket){
this.socket = socket ;
System.out.println("Receives a new browser request from "
+ socket + "\n\n");
}
public void run() {
PrintWriter out = null ;
try {
String str = "" ;
out = new PrintWriter( socket.getOutputStream() ) ;
out.write("This a web-page.") ;
// :-(
out.flush() ;
// :-(
socket.close() ;
System.out.println("Request successfully fulfilled.") ;
} catch (IOException io) {
System.out.println(io.getMessage());
}
}
}
私が使用しているかどうか
out = new PrintWriter( socket.getOutputStream(), true ) ;
また
out = new PrintWriter( socket.getOutputStream() ) ;
出力はブラウザに送られません。ストリームを使用して手動でフラッシュしている場合にのみ、出力がブラウザーに送信されます
out.flush() ;
私の質問: new PrintWriter( socket.getOutputStream(), true )
出力バッファを自動的にフラッシュすることになっていますが、そうしていません。なんで?