diff --git a/Projet_POO/src/liste/ConstanteListeUtilisateur.java b/Projet_POO/src/liste/ConstanteListeUtilisateur.java new file mode 100644 index 0000000..6b5d0f5 --- /dev/null +++ b/Projet_POO/src/liste/ConstanteListeUtilisateur.java @@ -0,0 +1,9 @@ +package liste; + +public class ConstanteListeUtilisateur { + + static public String IP_BROADCAST = "255.255.255.255"; + static public int SIZE_ORDRE = 100; + static public int NUM_PORT_SERVER = 2000; + +} diff --git a/Projet_POO/src/nom/GestionnaireListeUtilisateur.java b/Projet_POO/src/liste/GestionnaireListeUtilisateur.java similarity index 51% rename from Projet_POO/src/nom/GestionnaireListeUtilisateur.java rename to Projet_POO/src/liste/GestionnaireListeUtilisateur.java index 16c72ed..86a4d3a 100644 --- a/Projet_POO/src/nom/GestionnaireListeUtilisateur.java +++ b/Projet_POO/src/liste/GestionnaireListeUtilisateur.java @@ -1,12 +1,13 @@ -package nom; +package liste; import java.util.ArrayList; -import java.util.List; public class GestionnaireListeUtilisateur { //contient la liste Utilisateur à jour - public List listeUtilisateur = new ArrayList(); + public static ArrayList listeUtilisateur = new ArrayList(); + + //Instance du gestionnaire de liste static private GestionnaireListeUtilisateur uniqueInstance = null; @@ -23,44 +24,26 @@ public class GestionnaireListeUtilisateur { } - //crée la liste utilisateur initial ? - private GestionnaireListeUtilisateur() { + + //récupérer la liste lors de la conenxion //TODO + public void recuperationListeInitiale() { + //ici ? } //ecoute le port de broadcast pour recevoir le message personnalisé - public String ecoute() { - int portEcoute = 2000; - UdpUnicastServer server = new UdpUnicastServer(portEcoute); - - - - - return ""; + public void ecoute() { //static ?? + Thread ecouteThread = new Thread(new UdpUnicastServer(ConstanteListeUtilisateur.NUM_PORT_SERVER)); + ecouteThread.start(); } //envoie en Broadcast aux autres liste les infos sur cet utilisateur - public void envoie() { - - + public void envoie(String message) { + Thread envoieThread = new Thread(new UdpBroadcastClient(ConstanteListeUtilisateur.NUM_PORT_SERVER, message)); + envoieThread.start(); } - //met à jour la Liste d'utilisateur - public void MAJListeUtilisateur() { - ajouteUtilisateur(); - supprimeUtilisateur(); - - } - // detecte les nouveaux utilisateurs entrant et les ajoute à la liste - private void ajouteUtilisateur() { - - } - - // detecte les utilisateurs sortant et les supprime de la liste - private void supprimeUtilisateur() { - - } } diff --git a/Projet_POO/src/liste/MainUDPBroad.java b/Projet_POO/src/liste/MainUDPBroad.java new file mode 100644 index 0000000..467a4cf --- /dev/null +++ b/Projet_POO/src/liste/MainUDPBroad.java @@ -0,0 +1,30 @@ +package liste; + +//import java.util.concurrent.ExecutorService; +//import java.util.concurrent.Executors; + +public class MainUDPBroad { + + public static void main(String[] args) { + int portServer = ConstanteListeUtilisateur.NUM_PORT_SERVER; + + UdpBroadcastServer server = new UdpBroadcastServer(portServer); + UdpBroadcastClient client = new UdpBroadcastClient(portServer, "add$$$" + 77 + "$$$Delta$$$LocalHost"); + UdpBroadcastClient client1 = new UdpBroadcastClient(portServer, "add$$$" + 75 + "$$$Beta$$$LocalHost"); + UdpBroadcastClient client2 = new UdpBroadcastClient(portServer, "add$$$" + 11 + "$$$Alpha$$$LocalHost"); + + Thread ts = new Thread(server); + Thread t0 = new Thread(client); + Thread t1 = new Thread(client1); + Thread t2 = new Thread(client2); + + ts.start(); + t0.start(); + t1.start(); + t2.start(); + + //ExecutorService executorService = Executors.newFixedThreadPool(2); + //executorService.submit(server); + //executorService.submit(client); + } +} diff --git a/Projet_POO/src/liste/MainUDPMulti.java b/Projet_POO/src/liste/MainUDPMulti.java new file mode 100644 index 0000000..0048dc2 --- /dev/null +++ b/Projet_POO/src/liste/MainUDPMulti.java @@ -0,0 +1,26 @@ +package liste; + +//import java.util.concurrent.ExecutorService; +//import java.util.concurrent.Executors; + +public class MainUDPMulti { + + public static void main(String[] args) { //ne marche pas : soit route (routeur) soit code soit 2 .... + int portServer = 2000; + int multicastPort = 7000; + + UdpMulticastServer server = new UdpMulticastServer(portServer, multicastPort); + UdpMulticastClient client = new UdpMulticastClient(portServer, multicastPort); + + Thread ts = new Thread(server); + Thread t0 = new Thread(client); + + + ts.start(); + t0.start(); + + //ExecutorService executorService = Executors.newFixedThreadPool(2); + //executorService.submit(server); + //executorService.submit(client); + } +} diff --git a/Projet_POO/src/liste/MainUDPUni.java b/Projet_POO/src/liste/MainUDPUni.java new file mode 100644 index 0000000..adc4c92 --- /dev/null +++ b/Projet_POO/src/liste/MainUDPUni.java @@ -0,0 +1,31 @@ +package liste; + +//import java.util.concurrent.ExecutorService; +//import java.util.concurrent.Executors; + +public class MainUDPUni { + + public static void main(String[] args) { + int portServer = 2000; + + + UdpUnicastServer server = new UdpUnicastServer(portServer); + UdpUnicastClient client = new UdpUnicastClient(portServer, "LocalHost"); + UdpUnicastClient client1 = new UdpUnicastClient(portServer, "LocalHost"); + UdpUnicastClient client2 = new UdpUnicastClient(portServer, "LocalHost"); + + Thread ts = new Thread(server); + Thread t0 = new Thread(client); + Thread t1 = new Thread(client1); + Thread t2 = new Thread(client2); + + ts.start(); + t0.start(); + t1.start(); + t2.start(); + + //ExecutorService executorService = Executors.newFixedThreadPool(2); + //executorService.submit(server); + //executorService.submit(client); + } +} diff --git a/Projet_POO/src/liste/TraitementCmdListe.java b/Projet_POO/src/liste/TraitementCmdListe.java new file mode 100644 index 0000000..e7465e5 --- /dev/null +++ b/Projet_POO/src/liste/TraitementCmdListe.java @@ -0,0 +1,93 @@ +package liste; + +import java.util.ArrayList; +import java.util.concurrent.Semaphore; + +public class TraitementCmdListe implements Runnable{ + + String message; + Semaphore semaphore; + + public TraitementCmdListe(String cmd, Semaphore semaphore) { + this.message = cmd; + this.semaphore = semaphore; + + } + + public void run() { + try { + + String[] cmd = message.split("\\$\\$\\$", 0); //vérifier longueur 4 ?? //TODO + String ordre = cmd[0]; + String id = cmd[1]; + String nom = cmd[2]; + String ip = cmd[3]; + + + semaphore.acquireUninterruptibly(); + System.out.println("bloqué"); + + if (ordre.equals("delete")) { + GestionnaireListeUtilisateur.listeUtilisateur = supprimeUtilisateur(GestionnaireListeUtilisateur.listeUtilisateur, id); + } + + if (ordre.equals("add")) { + GestionnaireListeUtilisateur.listeUtilisateur = ajouteUtilisateur(GestionnaireListeUtilisateur.listeUtilisateur, id, nom, ip); + } + System.out.println("libéré"); + semaphore.release(); + + + //Thread.sleep(1000); + //System.out.println("fini " + id); + System.out.println(GestionnaireListeUtilisateur.listeUtilisateur.get(0).nom); + + } catch (Exception e) {} + + } + + + + + // detecte les nouveaux utilisateurs entrant et les ajoute à la liste + private ArrayList ajouteUtilisateur(ArrayList listeUtilisateur, String id, String nom, String ip) { + + boolean inListe = false; + + //si il est dans la liste on le renomme + for (int i=0; i supprimeUtilisateur(ArrayList listeUtilisateur, String id) { + + for (int i=0; i