lecture à partir d'un BufferedReader [résolu] - Java - Programmation
Marsh Posté le 24-07-2006 à 01:14:06
défini 'n'a plus rien à lire'. Tant que t'as pas reçu un EOF, tant que ton pair n'a pas fermé son canal, alors il pourrait y avoir quelque chose à lire. Solution : fermé le canal côté émetteur.
Marsh Posté le 24-07-2006 à 10:23:06
En fait je fait une sorte de client FTP, et il s'agit "d'écouter" les messages reçus sur le canal de commandes en FTP. Il n'y donc pas de fin explicite genre EOF, et le serveur FTP ne ferme pas le canal après y avoir envoyé qqch
je donne un exemple d'execution qui illustre mon problème :
Citation : $ java monProgramme |
Après la 5ième ligne, le programme fait encore un readLine() (pour voir si la ligne suivant est null), mais le serveur n'envoye plus rien, et le programme attend donc indéfiniment. Je voulais juste savoir si qqn connaît le truc pour éviter ca.
Marsh Posté le 24-07-2006 à 10:40:13
il faut lancer l'ecoute dans un nouveau thread, qui écoute en permanence et qui allimente un buffer
Marsh Posté le 24-07-2006 à 14:03:15
ratakses a écrit : |
ce qui est parfaitement normal. la lecture est blocante
Marsh Posté le 24-07-2006 à 15:59:08
voila c'est bon jai fait un thread qui écrit tout ce qu'il recoit dans un while(true), ca marche. merci.
Marsh Posté le 23-07-2006 à 20:38:07
Salut à tous!
Alors voilà mon problème, j'aimerais lire ligne par ligne a partir d'un BufferedReader, et afficher au fur et a mesure les lignes lues. Comme je sais pas combien y en a, j'aimerai bien que dès qu'il n'y a plus de ligne, il s'arrête de lire. J'ai fait le code suivant, mais dans ma situation, lorsque il n'y a plus rien à lire, il continue à attendre perpetuellement une nouvelle ligne (puisqu'il attend une nouvelle ligne pour savoir si vraiment il n'y plus rien à lire)...
Je sais pas tellement comment faire, des idées ?
merci.
requestFromServer = new BufferedReader(new InputStreamReader(requestSocket.getInputStream()));
String reponse;
while ((reponse = requestFromServer.readLine()) != null){
System.out.println(reponse);
}
Message édité par ratakses le 24-07-2006 à 15:59:28