April 20, 200718 yr Bonjour, j'ai un programme client/serveur. Le soucis que j'ai, c'est que lorsque le serveur envoie un message au client, le client l'affiche mais à la fin de l'affichage, le programme ne va pas à la ligne (il devrait afficher > qui indique que le client peut taper une nouvelle requete) Méthode coté serveur : public void action_info(List<String> liste){ StringBuilder reponse = new StringBuilder(); String nomFichier = liste.get(1); boolean found = srv.getInfoFichiers().appartient(nomFichier); //le fichier est bien present if(found){ Fichier fic = srv.getInfoFichiers().getFichier(nomFichier); //J'affiche les infos pour vérifier que tout est affiché System.out.println("infos sur le fichier : "); System.out.println(fic.afficheFichier().toString()); //J'envoie l'affichage au client reponse.append(fic.afficheFichier()); } //envoie un message a la socket out.println(reponse); out.flush(); } Coté client : public void option_info(List<String> liste){ //... // Cree une socket pour communiquer avec le service se trouvant //sur la machine ip au port port Socket s = new Socket(ip, port); // Cree les streams pour lire et ecrire du texte dans cette socket BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); PrintStream out = new PrintStream(s.getOutputStream()); // Informe l'utilisateur de la connection System.out.println("Connecte sur " + s.getInetAddress() + ":"+ s.getPort()); //on envoie au serveur une chaine de caractere contenant l'option et le nomFichier StringBuilder envoi = new StringBuilder(); envoi.append(option).append(" ").append(nomFichier).append(" "); envoi.append(ip).append(" ").append(port); out.println(envoi); // lit une ligne provenant de la socket, donc du serveur while((line = in.readLine())!=null){ System.out.println(line); } if(s != null) s.close(); }catch(IOException ioe){ System.err.println(ioe); } } Lorsque je lance mon programme, j'ai ceci : java Client > INFO toto 127.0.0.1 2000 Connecte sur /127.0.0.1:2000 nom = toto parts = 3 127.0.0.1 43359 : toto1 toto2 toto3 java Serveur 2000 infos sur le fichier : nom = toto parts = 3 127.0.0.1 43359 : toto1 toto2 toto3 L'affichage est correcte dans les 2 cas mais coté client, il manque le retour à la ligne > Quelqu'un saurait-il comment réglé mon probleme ? Merci
April 20, 200718 yr Salut, Je ne vois pas où tu dis (dans ton code) que tu veux faire un retour à la ligne ni même où tu dis vouloir afficher un > ?
April 20, 200718 yr oui, juste avant de sortir de ta méthode dans le client, rajoute le println qui va bien et voilà
April 20, 200718 yr Author Salut,Je ne vois pas où tu dis (dans ton code) que tu veux faire un retour à la ligne ni même où tu dis vouloir afficher un > ? C'est vrai que je n'ai pas été clair J'ai une méthode traitement qui permet d'analyser une ligne suivant l'option choisie puis appel la méthode correspondant à cette option et c'est cette méthode qui affiche le ">" @lorinc ESt-ce que tu pourrais m'expliquer pourquoi le fait d'avoir ajouter : System.out.println(""); Juste après le while fait que le programme reviens à la ligne et affiche le prompt >
April 20, 200718 yr ben le retour à la ligne, c'est un peu le but du println() pour le prompt, faudrait voir le reste de ton code
Archived
This topic is now archived and is closed to further replies.