austinpower Posté(e) le 20 avril 2007 Partager Posté(e) le 20 avril 2007 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
windu.2b Posté(e) le 20 avril 2007 Partager Posté(e) le 20 avril 2007 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 > ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 20 avril 2007 Partager Posté(e) le 20 avril 2007 oui, juste avant de sortir de ta méthode dans le client, rajoute le println qui va bien et voilà Lien vers le commentaire Partager sur d’autres sites More sharing options...
austinpower Posté(e) le 20 avril 2007 Auteur Partager Posté(e) le 20 avril 2007 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 > Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 20 avril 2007 Partager Posté(e) le 20 avril 2007 ben le retour à la ligne, c'est un peu le but du println() pour le prompt, faudrait voir le reste de ton code Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.