Bonjour,

J'ai un programme qui attend la connexion d'un client avec ce code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class TransfertFichier implements Runnable {
 
	private ServerSocket socketserver;
	private Socket socket;
 
	public TransfertFichier(ServerSocket s) {
		socketserver = s;
	}
 
	public final synchronized void run() {
		try {
			while (true) {
 
				// On attend la connexion d'un client
				socket = socketserver.accept();
.......
j'ai mis des petits points car après tout va bien, rien d'important.
Le programme fonctionne très bien lorsque le client se connecte.

Mais j'aimerai faire une méthode pour arrêter la boucle while quand je le souhaite.
J'ai essayé de fermer le socket du serveur : socketserver.close();

Mais là ça lève une exception :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
java.net.SocketException: socket closed
Normal, car la méthode run() est en attente d'une connexion à la ligne socketserver.accept();

Si je mets un booléen dans la condition while, ça ne fonctionne pas car il faut d'abord qu'il ait fait un tour de boucle, or il est bloqué sur socketserver.accept();


Comprenez-vous mon problème ?
Pouvez-vous m'aider ?

Merci beaucoup.