J'écris un serveur basé sur socket sous Java. Un client s'y connecte (un navigateur Web) et le serveur renvoie un code html simple et définit un cookie pour reconnaître le prochain client se connecte à nouveau. J'utilise PrintStream pour écrire sur le socket, mais le flush ne fonctionne pas. La seule façon que je peux vider est d'utiliser shutdownoutput ou close et tous les deux ferment le flux socket. Mais je ne le veux pas parce que je suis en train de le lire/écrire plusieurs fois dans plusieurs endroits du code. Que peut faire? Impossible d'obtenir de l'aide des tags. J'ai également essayé d'autres classes d'écrivain tamponné, même problème.Java Socket OutputStream ne purge pas
Répondre
Je voudrais essayer d'appeler cette méthode au lieu de flush:
public boolean checkError()
Returns:
True if and only if this stream has encountered an IOException other than InterruptedIOException, or the setError method has been invoked
Voir si elle échoue pour une raison de faire la chasse d'eau (checkError appelle en interne affleurant et se souvient de l'état d'erreur). Il est également intéressant d'essayer de se connecter au serveur à l'aide de telnet et de voir si les données retournent immédiatement, ou d'écrire un simple programme de socket client java à vérifier (couper/coller un sur le net).
Il se peut que le navigateur ait décidé d'attendre délibérément plus d'entrées avant d'afficher votre code HTML (surtout si le code HTML n'est pas parfaitement formé). Je me souviens d'avoir moi-même eu ce problème par le passé.
Ah oui, sillyproblem, il suffit d'utiliser pstream.writeln (""); puisque breader.readLine() lit jusqu'à ce qu'il trouve le caractère '\ n'. alors write() ne fonctionnera pas.
- 1. Ecriture sur Socket outputStream sans fermeture
- 2. Programmation Java Socket
- 3. Le tube nommé ne purge pas en Python
- 4. Comment passer socket, INPUTSTREAM objets OutputStream entre les activités
- 5. Changement d'auteur sur un OutputStream en Java
- 6. OutputStream avec ByteArrayOutputStream n'écrivant pas
- 7. Socket PHP ne fonctionne pas
- 8. Java - Socket - Freeze
- 9. purge toutes les dépendances
- 10. Suppression par lots/purge d'enregistrements via Java ORM
- 11. pourquoi mon client ne lit pas correctement le outputStream envoyé par le serveur?
- 12. En-tête de programmation socket Java
- 13. Java Socket Programmation
- 14. purge précédent css
- 15. php socket http post ne fonctionne pas
- 16. SPP Socket createRfcommSocketToServiceRecord ne se connecte pas
- 17. udpclient.close ne ferme pas toujours le socket?
- 18. Socket ne se ferme pas correctement
- 19. Création de Java-Zip-Archive à partir de OutputStream existant
- 20. comment obtenir OutputStream
- 21. Vous ne trouvez pas un socket pour le débogueur Eclipse
- 22. Existe-t-il un OutputStream Null en Java?
- 23. Java TCP Socket reniflage
- 24. java socket issue
- 25. Socket Programmation en Java
- 26. Java Socket Testing
- 27. Problèmes avec BZIP-OutputStream
- 28. Deux OutputStream au lieu d'un?
- 29. Java ne peut pas trouver le symbole
- 30. Test de ce qui est écrit sur un Java OutputStream
Pouvez-vous publier un exemple de code de votre serveur? – Kylar
Ceci est vraiment ancien, mais pour la postérité, 'ps.flush()' est inutile car un flush se produit quand '" \ n "' est imprimé - c'est-à-dire 'println()' est appelé. De plus, dans 'SocketOutputStream', la méthode' flush() 'est de toute façon non-op. – Gray