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 72 73 74 75 76 77 78 79 80 81
|
private static void start() throws RemoteException {
keepGoing = true;
// Format message disant que nous attendons
display("Routeur en attente d'une connexion " + coordinateur.getPort() + ".");
// Routeur racine si aucune IP donnée par le coordinateur
if(coordinateur.getIpRouteurRacine().equals("")){
RouteurRacine();
} else{
RouteurSimple();
}
}
private static void RouteurRacine(){
/* Création du socket serveur et attente de la requête de connexion */
try {
// Le socket utilisé par le serveur
serverSocket = new ServerSocket(coordinateur.getPort());
display("Je suis le routeur racine et je suis en attente de client et/ou routeur.");
coordinateur.setIpRouteurRacine("0");
// Boucle infinie tant qu'il y a une connexion
while(keepGoing) {
// On démarre la connexion
Socket socket = serverSocket.accept();
// Si on a demandé d'arrêter
if(!keepGoing) break;
}
Arret();
}catch (IOException e) {
String msg = sdf.format(new Date()) + " Erreur sur le nouveau serveur Socket: " + e + "\n";
display(msg);
}
}
private static void RouteurSimple(){
// Essai de ce connecter au serveur
try {
display("Je suis un autre routeur.");
Socket socket = new Socket("localhost", coordinateur.getPort());
while(true) {
// Si on a demandé d'arrêter
if(!keepGoing) break;
}
}
// Si échec alors erreur
catch(Exception ec) {
display("Erreur de connexion au serveur:" + ec);
}
}
private static void Arret(){
// Arrêt ?
try {
serverSocket.close();
for(int i = 0; i < al.size(); ++i) {
Server.ClientThread tc = al.get(i);
try {
tc.sInput.close();
tc.sOutput.close();
tc.socket.close();
}
catch(IOException ioE) {}
}
}catch(Exception e) {
display("Erreur pour fermer le serveur et les clients: " + e);
}
} |
Partager