Salut,
j'ai une class Client et une autre Serveur.
Dans la classe Serveur, j'ai la méthode suivante :
Merci
Version imprimable
Salut,
j'ai une class Client et une autre Serveur.
Dans la classe Serveur, j'ai la méthode suivante :
Merci
Je délire où tu ne lis qu'une ligne de la réponse du serveur ?
Code:
1
2 line = in.readLine();
J'ai remplacé la ligne précédente par :Citation:
Envoyé par chtig
Ca affiche ce qu'il faut mais le programme ne rend pas la "main".Code:
1
2
3 while((line = in.readLine()) != null){ System.out.println(line); }
Une fois l'affichage terminé, il devrait y avoir :
>
Mais là rien...
Tu peux remplacer par
Et me dire ce que ça donne ?Code:
1
2
3
4
5 while((line = in.readLine()) != null){ System.out.println("|"+line+"|"); } System.out.println("fini");
remplace
parCode:
1
2 BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
etCode:
1
2
3 InputStream inputStream = s.getInputStream(); BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
parCode:
1
2
3
4 while((line = in.readLine()) != null){ System.out.println(line); }
pour voir ...Code:
1
2
3
4 while((inputStream.available()) != 0){ System.out.println(in.readLine()); }
C'est un peu normal que ça bloque, un inputStream dans lequel il n'y a plus rien bloque quand on fait un read ...
Ouaip, je suis un peu bête c'est normal ...
Le souci c'est que côté client, en raisonnant dans l'absolu (sans penser implémentation Java), comment tu veux qu'il sache que la communication avec le serveur est terminée ?
Il reçoit des choses au fur et à mesure (c'est du réseau en dessous) et à un moment il ne reçoit plus rien. Ca veut dire que c'est fini ? Pas forcément, il peut juste s'agir d'un délai réseau ...
Donc j'ai l'impression que tu n'échapperas pas à faire envoyer par le serveur un message qui veuille dire fin de communication que tu interpréteras par le client...
Ou alors tu gardes ce que tu avais au début et tu fais couper la socket par le serveur (après tout, c'est une socket vers ce client en particulier, et elle ne sert plus à rien)
Ca se fait comment ?Citation:
Envoyé par chtig
Je ne suis pas certain, mais j'essayerais ça :
Côté serveur
et côté clientCode:
1
2 socket.shutDownOutput();
Code:
1
2
3 while (!socket.isInputShutdown()){ }