Socket : Fermer le socket en attente de connexion
Bonjour,
J'ai un programme qui attend la connexion d'un client avec ce code :
Code:
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:
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.