Bonjour à tous, j'ai ici un problème de programmation que je suis pas capable de résoudre. Je suis en train de coder en JAVA un module qui permet de gérer la communication de plusieurs petites interfaces de jeux. Alors dès qu'un jeux est terminé, le ServeurSocket devrait être fermé pour libérer le port pour une réutilisation ultérieure, mais il ne veut absolument rien savoir et me sort l'erreur.
java.net.SocketException: socket closed
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:421)
at java.net.ServerSocket.implAccept(ServerSocket.java:243)
La ligne fautive est désignée par une flèche. En passant, le client n'est plus connecté sur le serveur quand il essait de libérer le port.
Code :
//Constructeur
public Partie(String nomDePartie,int le_Port)
{
Partie.nbPartieCree++;
//initialise le timer à une minute. 1=30 secondes.
this.tacheTimer = new TacheTimer(1,this);
//place le nom de la partie dans la variable privée à la classe.
this.nomPartie = nomDePartie;
//contient le port qui sera utilisé par la partie.
this.Port = le_Port;
try
{
//place le port de la partie dans le serverSocket.
this.gameSocket = new ServerSocket(this.Port);
}
catch (IOException e)
{
e.printStackTrace();
}
//active le processus.
this.start();
}
public void terminerPartie()
{
//creer un objet de type Socket.
ServerConnectionThread client = null;
for(int i=0;i<this.maxJoueurAtteint;i++){
//place le socket du verteur dans la variable clientSocket.
client = (ServerConnectionThread)this.tabSocket.get(i);
//ferme le Socket.
client.stopRunning();
}
client = null;
try{
this.gameSocket.close(); <-------------------------------------------
}catch (Exception e){
System.out.println("Le gameSocket close impossible " + this.nomPartie);
}
}