[Thread][socket]Problème de fermeture d'un thread
Bonour tout le monde,
Il y a peu de temps j'ai demandé comment fermer un thread, on ma redirigé vers la faq mais malheureusement je n'arrive pas à le faire. Bien sur j'ai essayé d'autre méthode mais c'est pareil.
Je suis débutant en Java.
Voici mon dernier essaie (je le trouvais pas mal mais ça ne fonctionne pas).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class inter_client extends JFrame
{
...
private boolean fin= true;
//voici le thread de connexion a un serveur.
public class threadconnex extends Thread
{
public void run()
{
boolean connexionEnCours = true;
try
{
BufferedReader entrée = new BufferedReader(new InputStreamReader(conexion.getInputStream()));
PrintWriter sortie = new PrintWriter(conexion.getOutputStream(), true);
sortie.println("Client connecté\n");
while(connexionEnCours)
{
connexionEnCours = fin;
String ligne = entrée.readLine();
panneau.append(ligne);
}
panneau.append("\nfermeture connexion\n");
sortie.println("Client deconnecté\n");
conexion.close();
}
catch(IOException ioe)
{
panneau.append("\nerreur 11 " + ioe);
}
}
}
//méthode déclencher par clic de souris en interface graphique
public class lance_conex implements ActionListener
{
public void actionPerformed(ActionEvent ea)
{
try{
conexion = new Socket("meda.homelinux.com", 1234);
panneau.append("Connexion au serveur établie\n");
t1 = new threadconnex();
t1.start();
lancer.setEnabled(false);
arreter.setEnabled(true);
}
catch(IOException ioe)
{
}
}
}
//voici la méthode pour fermer le thread, il change la valeur du booléen.
//méthode déclencher par clic de souris en interface graphique
public class arrete_conex implements ActionListener
{
public void actionPerformed(ActionEvent ace)
{
fin = false;
conexion = null;
chat.setEnabled(false);
arreter.setEnabled(false);
lancer.setEnabled(true);
}
} |
Donc en fait la je changeais la valeur d'un booléen pour terminer la boucle.
merci pour votre aide