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) :
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);
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.
Le code de receiveData est tout simple :
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();
  }
Voilà comment j'envoie côté client :
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!");
 }
avec toServer qui est un PrintWriter ...

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'