Aller au contenu

[Java]Client/Srv : programme qui ne s'arrete pas


Messages recommandés

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

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 :transpi:

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...