IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Récupération de chaine en telnet


Sujet :

avec Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Par défaut Récupération de chaine en telnet
    Bonjour à tous

    je suis débutant en Java, et ne comprend pas le problème que je rencontre.
    En effet, en mode debug ( sur eclipse ) et en exécution pas à pas, le code de réception fonctionne, mais lorsque je le lance sans les point d'arrêt, il ne fonctionne pas.
    En mode pas à pas, je réception mes 4 lignes du serveur telnet mais en exécution normale, je ne réceptionne qu'une ligne, le reste du buffer est restitué à la commande que j'envoie après.

    déclarations du socket:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    socket = new java.net.Socket("172.26.100.50", 23);
    in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    out = socket.getOutputStream();
     
    dans la méthode flush:
    String Rep ="";
    while( in.ready() ){
    	Rep += Reception();
    }
     
    public static String Reception(){
    	String Rep ="";
    	try {
    		Rep = in.readLine();
    		return Rep;
    		} catch (IOException e) {
    		return Rep = null;
    	} 
    }
    Merci par avance pour votre aide

    A+
    Zygoat

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    Salut je pense que vue que tu lie ligne par ligne tu devrais faire comme ceci

    après je ne sais pas pourquoi ton code marche en mode debug

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Par défaut
    Bonjour Rolfone et merci pour ta réponse.

    j'avais déja essayé comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    String filePath = "g:\\fichier.txt";
     
    try{
    // Création du flux bufférisé sur un FileReader, immédiatement suivi par un 
    // try/finally, ce qui permet de ne fermer le flux QUE s'il le reader
    // est correctement instancié (évite les NullPointerException)
    BufferedReader buff = new BufferedReader(new FileReader(filePath));
     
    try {
    String line;
    // Lecture du fichier ligne par ligne. Cette boucle se termine
    // quand la méthode retourne la valeur null.
    while ((line = buff.readLine()) != null) {
    System.out.println(line);
    //faites ici votre traitement
    }
    } finally {
    // dans tous les cas, on ferme nos flux
    buff.close();
    }
    } catch (IOException ioe) {
    // erreur de fermeture des flux
    System.out.println("Erreur --" + ioe.toString());
    }
    mais lorsque le buffer est vide, j'ai le pointer qui part je ne sais ou, je sais seulement que mon appli est planté puisque je ne reprend pas la main.

    J'ai mis un String rep += line; pour voir arriver mes chaines de caractère en multiligne, mais lorsque j'ai déjà reçu la dernière ligne, j'ai un plantage sur la ligne while (...)

    A+

    Zygoat

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    tu a un message d'erreur ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Par défaut
    Bonjour

    et non, pas d'erreur ne s'affiche en console.

    j'ai trouvé une solution, maintenant, je ne sais pas si c'est correct de coder comme ça, mais ça marche aussi bien en debug qu'en exécution normale.

    plutôt que de boucler sur

    while (in.read(b) != -1 ) ou autre méthode while ( in.readLine() != null )

    je boucle sur while( in.available() > 0)

    Dès que je n'avais plus rien à récupérer, mon pointer partait je ne sais ou sur in.read(b), pareil avec in.readLine(), et sans message d'erreur, et je ne pouvais pas reprendre la main.

    A+

    et merci pour l'aide apportée

    Zygoat

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/12/2007, 18h31
  2. récupération de chaine de caractères spéciaux
    Par toine62 dans le forum Langage
    Réponses: 2
    Dernier message: 26/11/2007, 16h58
  3. script shell récupération de chaine
    Par capucine1983 dans le forum Linux
    Réponses: 4
    Dernier message: 17/09/2007, 22h57
  4. Réponses: 5
    Dernier message: 31/05/2007, 19h35
  5. pb avec récupération de chaine (getline)
    Par splinternabs dans le forum C++
    Réponses: 2
    Dernier message: 23/04/2006, 09h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo