Client/serveur
adamsjilal
Messages postés
46
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonsoir,
j'ai un petit client serveur a mettre en place et je crois que je suis enfin blocker sur point selon lequel
j'arrive pas a assurer la communication en terme de String j'essayé avec de calcule et ca a marcher mais j'arrive pas faire echanger mes programme des chaine caractere. bon mon but etait de demander au client de devinner les lettre d'un mot pris au hasard ou aleatoirement par le serveur, du coup le client donne chaque fois un caractere et le serveur verifie si le caractere donnée par le client se trouve bien dans le mot, si oui le serveur redemande encore les lettre restant et sinon il dit dit que c'est faut et au bout de cinq essaies s'il n'arrive pas a trouver on lui decalare perdant.
pour cela j'ai mis en place l'application serveur
et mon client le voici:
si quelqu'un me comprend, je voudrait une solution de votre part je suis debutant en CLIENT/SERVEUR, merci d'avance pour l'aide.
j'ai un petit client serveur a mettre en place et je crois que je suis enfin blocker sur point selon lequel
j'arrive pas a assurer la communication en terme de String j'essayé avec de calcule et ca a marcher mais j'arrive pas faire echanger mes programme des chaine caractere. bon mon but etait de demander au client de devinner les lettre d'un mot pris au hasard ou aleatoirement par le serveur, du coup le client donne chaque fois un caractere et le serveur verifie si le caractere donnée par le client se trouve bien dans le mot, si oui le serveur redemande encore les lettre restant et sinon il dit dit que c'est faut et au bout de cinq essaies s'il n'arrive pas a trouver on lui decalare perdant.
pour cela j'ai mis en place l'application serveur
public static void lancer() { int nbreEssaye = 5; try { ServerSocket ss = new ServerSocket(1569); System.out.println("j'attend une connection..."); Socket s = ss.accept(); System.out.println("connection succès!"); InputStream in = s.getInputStream(); InputStreamReader streamreader = new InputStreamReader(in); BufferedReader lecteur = new BufferedReader(streamreader); OutputStream sortie = s.getOutputStream(); PrintWriter pw = new PrintWriter(sortie, true); System.out.println("j'attend un caractere:"); String chaine = lecteur.readLine(); String mot = anyItem(); // System.out.println(chaine); while (nbreEssaye > 0) { if (chaine.length() > 1) { pw.println("vous n'avez pas envoyer un caractere..."); } else { System.out.println("j'envoie une reponse..."); pw.println("good"); if(mot.contains(chaine)){ pw.println("Vrai"); }else { pw.println("Faux"); } } nbreEssaye--; } } catch (Exception e) { e.printStackTrace(); } }
et mon client le voici:
public static void lanceBr(){ try{ Socket s = new Socket("localhost",1569); InputStream is = s.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); OutputStream out = s.getOutputStream(); Scanner sc = new Scanner(System.in); System.out.println("donner une lettre"); String c = sc.nextLine(); out.write(c.getBytes()); String rep =br.readLine(); String re = br.readLine(); System.out.println("la reponse : "+rep); System.out.println("la reponse : "+re); }catch(Exception e){ e.printStackTrace(); } }
si quelqu'un me comprend, je voudrait une solution de votre part je suis debutant en CLIENT/SERVEUR, merci d'avance pour l'aide.
A voir également:
- Client/serveur
- Cybera client - Télécharger - Divers Réseau & Wi-Fi
- Changer serveur dns - Guide
- Filezilla client - Télécharger - Téléchargement & Transfert
- Filezilla client ou serveur ✓ - Forum Réseau
- Formate pour taxer client frigo vide ✓ - Forum Matériel & Système
1 réponse
Bonjour,
Ton code pourrait largement être simplifié, tu te mélanges un peu avec tous ces Stream et Reader dont la moitié ne servent à rien.
Bref, le problème c'est que côté serveur tu as
Or côté client tu n'envoie que le caractère, il te manque la fin de la ligne.
Pour te débloquer tu peux ajouter un \n à la suite de ton caractère.
Ton code pourrait largement être simplifié, tu te mélanges un peu avec tous ces Stream et Reader dont la moitié ne servent à rien.
Bref, le problème c'est que côté serveur tu as
sc.nextLine()qui attends une ligne entière (qui se termine donc par un \r ou \n)
Or côté client tu n'envoie que le caractère, il te manque la fin de la ligne.
Pour te débloquer tu peux ajouter un \n à la suite de ton caractère.
out.write(c.getBytes()); out.write('\n');