Bonjour, je code un petit client ftp.
dans une classe FTP, pour obtenir une reponse du serveur, je fais ca :
Code :
- public String reponse()
- {
- try {
- if (inp.ready()==true){
- String reponse=inp.readLine();
- return reponse;
- }
- else
- return null;
- }
- catch (IOException e) {
- e.printStackTrace();
- return null;
- }
- }
|
c'est une fonction non bloquante qui me renvoie une reponse si on peut lire le flux (inp) ou qui renvoie null si on ne peut pas.
c'est pourquoi dans une autre classe (celle qui a besoin de la reponse) je fais ca :
Code :
- public String lecture()
- {
- String reponse=null;
- String code="";
-
- while (code.equals(" " )!=true){
-
- reponse =reponse();
- while (reponse==null)
- reponse=reponse();
-
- log.afficher(reponse);
-
- if (reponse.equals("" )!=true){
- code=reponse.substring(3,4);
- }
- }
-
- return reponse;
- }
|
et la c'est carrement bloquant, je bouffe meme 100% des ressources de la machine et on boucle indefiniment si la reponse ne vient jamais, je me demandais si il n'y avait pas un autre moyen de faire, par exemple avec un timer qui appelerait 5 fois reponse() ? ou une autre solution que je ne connais pas.
PS : quand je fais reponse.substring(3,4); c'est au cas ou aurait un 230- et non un 230* ou * est un espace.