[résolu] lecture à partir d'un BufferedReader

lecture à partir d'un BufferedReader [résolu] - Java - Programmation

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.
 

Citation :


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
Reply

Marsh Posté le 23-07-2006 à 20:38:07   

Reply

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.

Reply

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
220-FTP server ready.
220-<<
220-A few hours grace before the madness begins again.
220->>
220 Ceci est un systeme prive - Aucun utilisateur anonyme autorise


 
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.

Reply

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

Reply

Marsh Posté le 24-07-2006 à 14:03:15    

ratakses a écrit :


 
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.

ce qui est parfaitement normal. la lecture est blocante

Reply

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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed