Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
653 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA/FTP] Question de codage

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA/FTP] Question de codage

n°462769
thunderbir​d54
Posté le 20-07-2003 à 17:24:20  profilanswer
 

Bonjour, je code un petit client ftp.
 
dans une classe FTP, pour obtenir une reponse du serveur, je fais ca :
 

Code :
  1. public String reponse()
  2.       {
  3.          try {
  4.             if (inp.ready()==true){
  5.                String reponse=inp.readLine();
  6.                return reponse;
  7.             }
  8.             else
  9.                return null;
  10.          }
  11.              catch (IOException e) {
  12.                e.printStackTrace();
  13.                return null;
  14.             }
  15.       }


 
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 :
  1. public String lecture()
  2.       {
  3.          String reponse=null;
  4.          String code="";
  5.      
  6.          while (code.equals(" " )!=true){
  7.        
  8.             reponse =reponse();
  9.             while (reponse==null)
  10.                reponse=reponse();
  11.        
  12.             log.afficher(reponse);
  13.        
  14.             if (reponse.equals("" )!=true){
  15.                code=reponse.substring(3,4);
  16.             }
  17.          }
  18.      
  19.          return reponse;
  20.       }


 
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.

mood
Publicité
Posté le 20-07-2003 à 17:24:20  profilanswer
 

n°462852
benou
Posté le 20-07-2003 à 20:44:18  profilanswer
 

c'est normal que ca boucle et que ca fasse un 100% quand in est pas ready d'après ton code.
 
Tu peux déjà mettre un Thread.yield() pour éviter que ton proc monopolise le CPU.
Tu peux aussi faire des Thread.sleep(), c'est à dire des pauses pour attendre que le flux soit ready
 
Enfin, dan le JDK 1.4, y a des mécanismes dans java.nio qui permettent de faire de la lecture de flux non-bloquante ...


---------------
ma vie, mon oeuvre - HomePlayer
n°463286
thunderbir​d54
Posté le 21-07-2003 à 13:38:44  profilanswer
 

oué le sleep ca marche d'enfer maintenant je suis a 3% d'utilisation cpu c mieux!!!
 
merci bcp
 
sinon juste pour info tu pourrais m'aiguiller pr la lecture de flux non bloquante? parceke je ne connais pas du tout.
 
A+

n°463348
benou
Posté le 21-07-2003 à 14:04:34  profilanswer
 

j'ai pas de lien à te filer, mais je suis certain qu'en tapant "java nio tutorial" tu trouveras plein de trucs ...


---------------
ma vie, mon oeuvre - HomePlayer

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JAVA/FTP] Question de codage

 

Sujets relatifs
combiner java et sqlQuestion a 2 sous
[Java ou Delphi] calcul de débit ADSL[c#] Question sur l'heritage entre classe
une 'tite question, y a pas plus simple pour checker l input ?[Eclipse] Supprimer des associations entre classes Java ? [résolu]
question con : peut-on mettre un if seul ?Java et les Webcams
question sur enum et classe [possible ou pas ?]Petite question de noob
Plus de sujets relatifs à : [JAVA/FTP] Question de codage


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR