Aller au contenu
View in the app

A better way to browse. Learn more.

Next

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Featured Replies

Posté(e)

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

Posté(e)

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 > ? :chinois:

Posté(e)
  • Auteur
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 >

Posté(e)

ben le retour à la ligne, c'est un peu le but du println() ;)

pour le prompt, faudrait voir le reste de ton code :transpi:

Archivé

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.