Bonjour
J'ai un client Java qui envoie des données à un serveur Java.
Lorsque je lance le serveur, il exécute ce bout de code qui attend la réception de données (j'ai laissé que l'essentiel) :
Je reçois bien l'information seulement le problème, c'est que le serveur affiche le nom reçu seulement quand le client se ferme donc je suppose que le client envoie réellement les données uniquement en se fermant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 csock = ssock.accept(); // creer les flux d'ES vers ce joueur et les ajouter createStreams(csock); // recuperer l'indice du client = le dernier connecte int ind = 0 ; // lire l'inscription et ajouter le pseudo a la liste des joueurs String name = getNickname(receiveData(ind)) ; //String name = receiveData(ind) ; System.out.println(name);
Le code de receiveData est tout simple :
Voilà comment j'envoie côté client :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 private String receiveData(int ind) throws IOException { return (String)((BufferedReader)fromPlayersStreamList.get(ind)).readLine(); }
avec toServer qui est un PrintWriter ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public void sendData(String req) { toServer.print(req); toServer.flush(); System.out.println("Sent!"); }
Bref, je pensais que la méthode flush() forcerait l'envoi de donnée mais ce n'est pas le cas. C'est uniquement en fermant le client que le serveur affiche le nom reçu... sans erreur ni côté serveur ni côté client.
Voyez-vous quelque chose de bizarre ?
Nas'
Partager