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

Collection et Stream Java Discussion :

[Scanner] Bloquage de hasNextLine()


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut [Scanner] Bloquage de hasNextLine()
    Bonjour,

    J'utilise un scanner pour lire les données d'un socket.
    Je ne sais pas combien de lignes le serveur va me renvoyer, je fais donc ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while(monScanner.hasNextLine())
    {
         String temp=monScanner.nextLine();
         // traitement
    }
    Or, cette boucle bloque sur le hasNextLine() dernier du nom, qui doit renvoyer false. Je ne sais pas pourquoi. Comment l'empécher de bloquer ?

    Merci

    Fred

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Si la machine distante n'a pas fermé la socket c'est tout à fait normal... Scanner utilise un buffer qui lit les données de la source, et se retrouve bloquer par le read().

    Donc deux solutions :
    • Soit la machine distante ne va plus utiliser la socket et elle doit la fermer.
    • Soit elle doit encore l'utiliser, et là tu est obligé de respecter un certain protocole pour connaitre la quantité de donnée à lire sans être bloqué...


    a++

  3. #3
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Salut,

    En fait, le problème est que j'utilise ce reader pour un petit projet de serveur / client FTP.
    Quand je fais un LIST, je ne sais pas quand je vais arretter de lire, mais je ne peux pas me permettre de fermer le socket sous pretexte que le client va bloquer sinon
    A quoi penses-tu quand tu parles de protocole ? Parceque je vois pas quel protocole je peux utiliser pour dire à mon client "tu vas lire 10 lignes"

    Merci

    Fred

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mavina Voir le message
    A quoi penses-tu quand tu parles de protocole ?
    Je parle du protocole de communication entre ton client et ton serveur : tu es obligé d'en avoir un pour pouvoir communiquer

    il s'agit juste des règles de communications (style, j'envoi "ceci", je répond "cela" si c'est bon ou "autre chose" si ce n'est pas bon).


    Lorsque tu parles de FTP, tu veux parler du vrai protocole FTP (c'est à dire en respectant la RFC) ou c'est une application de transfert de fichier qui utilises ses propres commandes ?


    Car normalement avec le protocole FTP lorsque tu fais un LIST le serveur renvoi simplement une réponse du style OK ou PAS OK et les données sont envoyé sur une autre socket... qui est fermé à la fin

    a++

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Par défaut
    [HS] Ce que j'adore avec adiGuba c'est que dès qu'il répond à un sujet j'apprends plein de choses ^^ [/HS]

  6. #6
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Le but est de faire un "pseudo" client/serveur ftp, on ne va pas faire un vrai serveur et client ftp, parceque le cours ne nous le permet pas, c'est trop gros de respecter la RFC en 1 semestre ^^

    Donc bah je crois que je vais passer le nombre de fichiers avant d'envoyer la liste en fait.

    La seule chose que je n'ai pas compris, c'est pourquoi cette fonction "de vérification" qui ne fait que regarder si il y a quelque chose à lire peut bloquer ?

    Je met résolu tout de même, merci bien

    Fred

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

Discussions similaires

  1. [C#] Piloter un scanner
    Par freegreg dans le forum Windows Forms
    Réponses: 9
    Dernier message: 12/04/2005, 12h34
  2. [bloquage] Enregistrement
    Par dudux dans le forum Bases de données
    Réponses: 7
    Dernier message: 01/09/2004, 20h29
  3. bloquage port par FAI
    Par djedjeboomboom dans le forum Développement
    Réponses: 6
    Dernier message: 18/08/2004, 11h02
  4. Problème : bloquage d'un pipe
    Par Nicaisse dans le forum POSIX
    Réponses: 10
    Dernier message: 24/07/2003, 11h06
  5. Scanner des mails et récupérer le fichier attaché
    Par delphim dans le forum Composants VCL
    Réponses: 2
    Dernier message: 24/04/2003, 09h35

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