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

Entrée/Sortie Java Discussion :

Eviter un blocage sur readLine()


Sujet :

Entrée/Sortie Java

  1. #1
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    octobre 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : octobre 2018
    Messages : 62
    Points : 79
    Points
    79
    Par défaut Eviter un blocage sur readLine()
    Bonjour,

    Je suis actuellement entrain de faire une application cliente pour se connecter à un serveur. La connexion se passe très bien, mais subsiste un problème. En effet, j'aimerai pouvoir attendre de recevoir un message terminant par un "\n" pour le traiter, sans bloquer le reste de mon programme. Pour présenter mon problème, voici le bout de code qui me pose problème.

    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
      public void continuousStreaming(){
        String messageSend = "ping 12345";
        String messageReceive = null;
     
        try{
          while(connected){
            if(parserCommand.commandToSend()){
              messageSend = parserCommand.getCommand();
              System.out.println("We got a commande : " +  messageSend);
            }
            out.println(messageSend); //Send to the server
            out.flush();
            if(in.ready()){ //We get a message only if the buffer is not empty.
              messageReceive = in.readLine(); //Wait the response to the client.
              messageTreatment(parseMessage(messageReceive));
            }
            messageSend = "ping 12345";
          }
        }catch(IOException error){
          error.printStackTrace();
        }
      }
    J'aimerais en fait que ma boucle while ne se bloque pas même s'il n'y a pas de message à lire par in.readLine(). J'ai fait plusieurs recherches sur internet, mais elles n'ont pas vraiment résolu mon problème. Ce bout de code s'exécute déjà sur un thread, donc me vois mal mettre uniquement la lecture sur un autre thread pour pas bloquer.

    Savez-vous la solution vers laquelle je pourrais me tourner ?

    Pour information in et out sont respectivement de type BufferedReader et PrintStream

    Je vous remercie encore de l'aide apportée !

  2. #2
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    avril 2002
    Messages
    4 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : avril 2002
    Messages : 4 225
    Points : 12 944
    Points
    12 944
    Par défaut
    Créer un thread depuis un autre Thread ne pose pas de problème particulier, je pense que ça serait la solution la plus commune a ton problème.

    Sinon tu peux utiliser l'API nio pour faire des appels non bloquants.

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

Discussions similaires

  1. comment eviter le blocage des contenus actifs sur explorer
    Par reski dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/07/2006, 16h41
  2. Blocage sur récursivité de base
    Par gilles641 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 07/04/2006, 13h42
  3. blocage sur Left
    Par TSS dans le forum Access
    Réponses: 5
    Dernier message: 10/03/2006, 12h33
  4. [10g1][OCI][C++][IIS] Blocage sur un update
    Par Herode dans le forum Interfaces de programmation
    Réponses: 2
    Dernier message: 21/02/2006, 09h32
  5. [ServerSocket] Problème de bloquage sur readLine()
    Par thomaswilliamson dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 15/03/2005, 11h15

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