cs_Yenapa
Messages postés67Date d'inscriptionsamedi 12 juillet 2003StatutMembreDernière intervention26 juin 2009
-
1 déc. 2004 à 10:55
indiana_jules
Messages postés750Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention23 décembre 2008
-
1 déc. 2004 à 11:58
Salut a tous
Je suis un train de developper une application client serveur, et j'ai un petit soucis avec mes socket:
Pour le moment je me connecte avec telnet, mais quand je ferme la fenetre du telnet, ma boucle continue de tourner.
Comment savoir si le client a fermé la socket?
Voici le code que j'utilise:
public void run (){
System.out.println("Thread " + s.getPort() + " is launched");
try {
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
while(!s.isClosed()) {
out.println("Socket " + s.getPort() + " say: it is time to go to bed");
System.out.println("Socket state: b-" + s.isBound() + " co-" + s.isConnected() + " cl-" + s.isClosed() + " is-" + s.isInputShutdown() + " os-" + s.isOutputShutdown());
this.yield();
}
out.close();
indiana_jules
Messages postés750Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention23 décembre 200822 1 déc. 2004 à 11:15
Slut
c'est normal, tu boucles si tu constates que la socket est toujours ouvert (!s.isClosed()). Or, à aucun moment tu fais s.close();. Du coup, elle reste toujours ouverte et ainsi continue de boucler. En fait, c'est à toi de déterminer à quel moment il faut fermer la socket (quand le client ferme la fenêtre, lance une commande ...).
Voilà
[Tout le monde a des idées : la preuve, c'est qu'il y en a de mauvaises]