Salut,
j'ai une class Client et une autre Serveur.
Dans la classe Serveur, j'ai la méthode suivante :
Merci
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 line = in.readLine();
J'ai remplacé la ligne précédente par :Envoyé par chtig
Ca affiche ce qu'il faut mais le programme ne rend pas la "main".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 while((line = in.readLine()) != null){ System.out.println("|"+line+"|"); } System.out.println("fini");
remplace
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 InputStream inputStream = s.getInputStream(); BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 while((line = in.readLine()) != null){ System.out.println(line); }
pour voir ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)
Je ne suis pas certain, mais j'essayerais ça :
Côté serveur
et côté client
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 socket.shutDownOutput();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 while (!socket.isInputShutdown()){ }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager