Bonjour, je suis actuellement un tuto sur openclassroom sur les sockets afin de réaliser un petit tchat pour m'exercer et progresser dans la programmation en Java.
Il est dit dans le tuto qu'il est nécessaire de fermer les sockets afin que ça ne viens pas embêter un autre programme utilisant le même port, or un peu plus bas dans le tuto je vois un bout de code et à aucun moment le serversocket n'est fermé.
public class Serveur {
public static void main(String[] zero){
ServerSocket socket;
try {
socket = new ServerSocket(2009);
Thread t = new Thread(new Accepter_clients(socket));
t.start();
System.out.println("Mes employeurs sont prêts !");
} catch (IOException e) {
e.printStackTrace();
}
}
}
class Accepter_clients implements Runnable {
private ServerSocket socketserver;
private Socket socket;
private int nbrclient = 1;
public Accepter_clients(ServerSocket s){
socketserver = s;
}
public void run() {
try {
while(true){
socket = socketserver.accept(); // Un client se connecte on l'accepte
System.out.println("Le client numéro "+nbrclient+ " est connecté !");
nbrclient++;
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Est ce volontaire ? Par curiosité et sans réfléchir j'ai testé de fermer le serversocket à la fin du try situé dans le main, évidemment ça crash étant donné que les thread travaillent "en parallèle ", donc ma question, est il nécessaire de le fermer ? si oui , où le fermer ?
Par avance merci 