J’ai créé un PrintWriter avec autoflush; pourquoi n’est-il pas automatique?

Mon client est un navigateur Web et envoie une demande à myserver en utilisant l’URL suivante: http://localhost

C’est le code côté serveur. Le problème réside dans la méthode d’exécution de la classe ServingThread .

 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 { Ssortingng 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()); } } } 

Si j’utilise

 out = new PrintWriter( socket.getOutputStream(), true ) ; 

ou

 out = new PrintWriter( socket.getOutputStream() ) ; 

la sortie ne parvient pas au navigateur. La sortie ne parvient au navigateur que si je purge manuellement à l’aide de stream à l’aide de

 out.flush() ; 

Ma question: new PrintWriter( socket.getOutputStream(), true ) est censé vider automatiquement le tampon de sortie, mais ce n’est pas le cas. Pourquoi?

Des Javadocs :

Paramètres:

out – Un stream de sortie
autoFlush – Un booléen; si true, les méthodes println , printf ou format vont vider le tampon de sortie

Cela ne dit pas que write() videra le tampon de sortie. Essayez d’utiliser println() place et il devrait se dérouler comme prévu.