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.
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.
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(); } }
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 !
Partager