Gros avancement au niveau de la gestion de la ListeUtilisateur
This commit is contained in:
parent
53e7aae64d
commit
a7bb562f3d
15 changed files with 447 additions and 69 deletions
9
Projet_POO/src/liste/ConstanteListeUtilisateur.java
Normal file
9
Projet_POO/src/liste/ConstanteListeUtilisateur.java
Normal file
|
@ -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;
|
||||||
|
|
||||||
|
}
|
|
@ -1,12 +1,13 @@
|
||||||
package nom;
|
package liste;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class GestionnaireListeUtilisateur {
|
public class GestionnaireListeUtilisateur {
|
||||||
|
|
||||||
//contient la liste Utilisateur à jour
|
//contient la liste Utilisateur à jour
|
||||||
public List<TypeListeUtilisateur> listeUtilisateur = new ArrayList<TypeListeUtilisateur>();
|
public static ArrayList<TypeListeUtilisateur> listeUtilisateur = new ArrayList<TypeListeUtilisateur>();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Instance du gestionnaire de liste
|
//Instance du gestionnaire de liste
|
||||||
static private GestionnaireListeUtilisateur uniqueInstance = null;
|
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é
|
//ecoute le port de broadcast pour recevoir le message personnalisé
|
||||||
public String ecoute() {
|
public void ecoute() { //static ??
|
||||||
int portEcoute = 2000;
|
Thread ecouteThread = new Thread(new UdpUnicastServer(ConstanteListeUtilisateur.NUM_PORT_SERVER));
|
||||||
UdpUnicastServer server = new UdpUnicastServer(portEcoute);
|
ecouteThread.start();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return "";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//envoie en Broadcast aux autres liste les infos sur cet utilisateur
|
//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() {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
30
Projet_POO/src/liste/MainUDPBroad.java
Normal file
30
Projet_POO/src/liste/MainUDPBroad.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
26
Projet_POO/src/liste/MainUDPMulti.java
Normal file
26
Projet_POO/src/liste/MainUDPMulti.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
31
Projet_POO/src/liste/MainUDPUni.java
Normal file
31
Projet_POO/src/liste/MainUDPUni.java
Normal file
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
93
Projet_POO/src/liste/TraitementCmdListe.java
Normal file
93
Projet_POO/src/liste/TraitementCmdListe.java
Normal file
|
@ -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<TypeListeUtilisateur> ajouteUtilisateur(ArrayList<TypeListeUtilisateur> listeUtilisateur, String id, String nom, String ip) {
|
||||||
|
|
||||||
|
boolean inListe = false;
|
||||||
|
|
||||||
|
//si il est dans la liste on le renomme
|
||||||
|
for (int i=0; i<listeUtilisateur.size(); i++) {
|
||||||
|
if (listeUtilisateur.get(i).id.equals(id)) {
|
||||||
|
inListe = true;
|
||||||
|
TypeListeUtilisateur utilisateur = listeUtilisateur.get(i);
|
||||||
|
utilisateur.nom = nom;
|
||||||
|
|
||||||
|
listeUtilisateur.set(i, utilisateur);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//s'il n'est pas dans la liste on la rajoute
|
||||||
|
if (!inListe) {
|
||||||
|
listeUtilisateur.add(new TypeListeUtilisateur(id, nom, ip));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return listeUtilisateur;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// detecte les utilisateurs sortant et les supprime de la liste
|
||||||
|
private ArrayList<TypeListeUtilisateur> supprimeUtilisateur(ArrayList<TypeListeUtilisateur> listeUtilisateur, String id) {
|
||||||
|
|
||||||
|
for (int i=0; i<listeUtilisateur.size(); i++) {
|
||||||
|
if (listeUtilisateur.get(i).id.equals(id)) {
|
||||||
|
|
||||||
|
listeUtilisateur.remove(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return listeUtilisateur;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
15
Projet_POO/src/liste/TypeListeUtilisateur.java
Normal file
15
Projet_POO/src/liste/TypeListeUtilisateur.java
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
package liste;
|
||||||
|
|
||||||
|
public class TypeListeUtilisateur {
|
||||||
|
|
||||||
|
public String nom;
|
||||||
|
public String id;
|
||||||
|
public String ip;
|
||||||
|
|
||||||
|
public TypeListeUtilisateur(String id, String nom, String ip) {
|
||||||
|
this.id = id;
|
||||||
|
this.nom = nom;
|
||||||
|
this.ip = ip;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
47
Projet_POO/src/liste/UdpBroadcastClient.java
Normal file
47
Projet_POO/src/liste/UdpBroadcastClient.java
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
package liste;
|
||||||
|
|
||||||
|
import java.net.DatagramSocket;
|
||||||
|
import java.net.InetAddress;
|
||||||
|
import java.net.SocketException;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.DatagramPacket;
|
||||||
|
import java.net.UnknownHostException;
|
||||||
|
|
||||||
|
public class UdpBroadcastClient implements Runnable{
|
||||||
|
|
||||||
|
private final int serverPort;
|
||||||
|
private final String message; //ordre$$$id$$$nom$$$ip
|
||||||
|
|
||||||
|
public UdpBroadcastClient(int serverPort, String message) {
|
||||||
|
this.serverPort = serverPort;
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
try(DatagramSocket serverSocket = new DatagramSocket()){
|
||||||
|
|
||||||
|
serverSocket.setBroadcast(true);
|
||||||
|
DatagramPacket datagramPacket = new DatagramPacket(
|
||||||
|
message.getBytes(),
|
||||||
|
message.length(),
|
||||||
|
InetAddress.getByName(ConstanteListeUtilisateur.IP_BROADCAST),
|
||||||
|
serverPort
|
||||||
|
);
|
||||||
|
|
||||||
|
serverSocket.send(datagramPacket);
|
||||||
|
serverSocket.close(); //fermer en cas de coupure abrupte ?? //TODO
|
||||||
|
|
||||||
|
} catch (SocketException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (UnknownHostException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
48
Projet_POO/src/liste/UdpBroadcastServer.java
Normal file
48
Projet_POO/src/liste/UdpBroadcastServer.java
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
package liste;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.DatagramPacket;
|
||||||
|
import java.net.DatagramSocket;
|
||||||
|
import java.net.SocketException;
|
||||||
|
import java.util.concurrent.Semaphore;
|
||||||
|
|
||||||
|
|
||||||
|
public class UdpBroadcastServer implements Runnable{
|
||||||
|
|
||||||
|
private final int serverPort;
|
||||||
|
|
||||||
|
|
||||||
|
public UdpBroadcastServer(int serverPort) {
|
||||||
|
this.serverPort = serverPort;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
try(DatagramSocket serverSocket = new DatagramSocket(serverPort)){ //fermeture ne cas de coupure abrupte ?? //TODO
|
||||||
|
|
||||||
|
Semaphore semaphore = new Semaphore(1, true);
|
||||||
|
|
||||||
|
byte[] buffer = new byte[ConstanteListeUtilisateur.SIZE_ORDRE];
|
||||||
|
//serverSocket.setSoTimeout(3000);
|
||||||
|
while (true) {
|
||||||
|
DatagramPacket datagramPacket = new DatagramPacket(buffer, 0, buffer.length);
|
||||||
|
serverSocket.receive(datagramPacket);
|
||||||
|
|
||||||
|
String receivedMessage = new String(datagramPacket.getData(), 0, datagramPacket.getLength());
|
||||||
|
System.out.println(receivedMessage);
|
||||||
|
|
||||||
|
Thread t = new Thread( new TraitementCmdListe(receivedMessage, semaphore) );
|
||||||
|
t.start();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (SocketException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("Timedout. CLient is closing.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
52
Projet_POO/src/liste/UdpMulticastClient.java
Normal file
52
Projet_POO/src/liste/UdpMulticastClient.java
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
package liste;
|
||||||
|
|
||||||
|
import java.net.InetAddress;
|
||||||
|
import java.net.SocketException;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.DatagramPacket;
|
||||||
|
import java.net.UnknownHostException;
|
||||||
|
import java.net.MulticastSocket;
|
||||||
|
|
||||||
|
public class UdpMulticastClient implements Runnable{
|
||||||
|
|
||||||
|
private final int serverPort;
|
||||||
|
private final int multicastPort;
|
||||||
|
|
||||||
|
public UdpMulticastClient(int serverPort, int multicastPort) {
|
||||||
|
this.serverPort = serverPort;
|
||||||
|
this.multicastPort = multicastPort;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
try{
|
||||||
|
Thread.sleep(1000);
|
||||||
|
|
||||||
|
InetAddress groupe = InetAddress.getByName("230.0.0.1");
|
||||||
|
MulticastSocket multicastSocket = new MulticastSocket(multicastPort); // port ?
|
||||||
|
String message = "add$$$" + 77 + "$$$Roger$$$LocalHost"; //ordre$$$id$$$nom$$$ip
|
||||||
|
DatagramPacket datagramPacket = new DatagramPacket(
|
||||||
|
message.getBytes(),
|
||||||
|
message.length(),
|
||||||
|
groupe,
|
||||||
|
serverPort
|
||||||
|
);
|
||||||
|
System.out.println("ici");
|
||||||
|
multicastSocket.send(datagramPacket);
|
||||||
|
System.out.println("ici");
|
||||||
|
multicastSocket.close();
|
||||||
|
|
||||||
|
|
||||||
|
} catch (SocketException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (UnknownHostException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (Exception e) {}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
63
Projet_POO/src/liste/UdpMulticastServer.java
Normal file
63
Projet_POO/src/liste/UdpMulticastServer.java
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
package liste;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.DatagramPacket;
|
||||||
|
import java.net.InetAddress;
|
||||||
|
import java.net.MulticastSocket;
|
||||||
|
import java.net.NetworkInterface;
|
||||||
|
import java.net.SocketException;
|
||||||
|
import java.util.concurrent.Semaphore;
|
||||||
|
import java.net.NetworkInterface;
|
||||||
|
import java.net.InetSocketAddress;
|
||||||
|
|
||||||
|
|
||||||
|
public class UdpMulticastServer implements Runnable{
|
||||||
|
|
||||||
|
private final int serverPort;
|
||||||
|
private final int multicastPort;
|
||||||
|
|
||||||
|
public UdpMulticastServer(int serverPort, int multicastPort) {
|
||||||
|
this.serverPort = serverPort;
|
||||||
|
this.multicastPort = multicastPort;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
try(MulticastSocket multicastSocket = new MulticastSocket(serverPort)){
|
||||||
|
|
||||||
|
InetAddress multicastAddr = InetAddress.getByName("229.0.0.1");
|
||||||
|
InetSocketAddress groupe = new InetSocketAddress(multicastAddr, multicastPort);
|
||||||
|
NetworkInterface netIf = NetworkInterface.getByIndex(0);
|
||||||
|
|
||||||
|
|
||||||
|
multicastSocket.joinGroup(groupe, netIf);
|
||||||
|
|
||||||
|
Semaphore semaphore = new Semaphore(1, true);
|
||||||
|
|
||||||
|
byte[] buffer = new byte[65507];
|
||||||
|
//serverSocket.setSoTimeout(3000);
|
||||||
|
while (true) {
|
||||||
|
DatagramPacket datagramPacket = new DatagramPacket(buffer, 0, buffer.length);
|
||||||
|
System.out.println("serverAttente");
|
||||||
|
multicastSocket.receive(datagramPacket);
|
||||||
|
System.out.println("serverReçu");
|
||||||
|
String receivedMessage = new String(datagramPacket.getData(), 0, datagramPacket.getLength());
|
||||||
|
System.out.println(receivedMessage);
|
||||||
|
|
||||||
|
Thread t = new Thread( new TraitementCmdListe(receivedMessage, semaphore) );
|
||||||
|
t.start();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} catch (SocketException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("Timedout. CLient is closing.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package nom;
|
package liste;
|
||||||
|
|
||||||
import java.net.DatagramSocket;
|
import java.net.DatagramSocket;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
|
@ -9,12 +9,10 @@ import java.net.UnknownHostException;
|
||||||
|
|
||||||
public class UdpUnicastClient implements Runnable{
|
public class UdpUnicastClient implements Runnable{
|
||||||
|
|
||||||
private final int clientPort;
|
|
||||||
private final int serverPort;
|
private final int serverPort;
|
||||||
private final String serverIP;
|
private final String serverIP;
|
||||||
|
|
||||||
public UdpUnicastClient(int clientPort, int serverPort, String serverIP) {
|
public UdpUnicastClient(int serverPort, String serverIP) {
|
||||||
this.clientPort = clientPort;
|
|
||||||
this.serverPort = serverPort;
|
this.serverPort = serverPort;
|
||||||
this.serverIP = serverIP;
|
this.serverIP = serverIP;
|
||||||
|
|
||||||
|
@ -22,9 +20,9 @@ public class UdpUnicastClient implements Runnable{
|
||||||
|
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
try(DatagramSocket serverSocket = new DatagramSocket(clientPort)){
|
try(DatagramSocket serverSocket = new DatagramSocket()){
|
||||||
for (int i = 0; i<3; i++) {
|
//for (int i = 0; i<3; i++) {
|
||||||
String message = "Message number " + i;
|
String message = "add$$$" + 77 + "$$$Roger$$$LocalHost"; //ordre$$$id$$$nom$$$ip
|
||||||
DatagramPacket datagramPacket = new DatagramPacket(
|
DatagramPacket datagramPacket = new DatagramPacket(
|
||||||
message.getBytes(),
|
message.getBytes(),
|
||||||
message.length(),
|
message.length(),
|
||||||
|
@ -32,7 +30,7 @@ public class UdpUnicastClient implements Runnable{
|
||||||
serverPort
|
serverPort
|
||||||
);
|
);
|
||||||
serverSocket.send(datagramPacket);
|
serverSocket.send(datagramPacket);
|
||||||
}
|
//}
|
||||||
|
|
||||||
} catch (SocketException e) {
|
} catch (SocketException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
|
@ -1,9 +1,10 @@
|
||||||
package nom;
|
package liste;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.DatagramPacket;
|
import java.net.DatagramPacket;
|
||||||
import java.net.DatagramSocket;
|
import java.net.DatagramSocket;
|
||||||
import java.net.SocketException;
|
import java.net.SocketException;
|
||||||
|
import java.util.concurrent.Semaphore;
|
||||||
|
|
||||||
|
|
||||||
public class UdpUnicastServer implements Runnable{
|
public class UdpUnicastServer implements Runnable{
|
||||||
|
@ -17,7 +18,10 @@ public class UdpUnicastServer implements Runnable{
|
||||||
|
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
try(DatagramSocket serverSocket = new DatagramSocket(serverPort)){
|
try(DatagramSocket serverSocket = new DatagramSocket(serverPort)){ //fermeture ne cas de coupure abrupte ?? //TODO
|
||||||
|
|
||||||
|
Semaphore semaphore = new Semaphore(1, true);
|
||||||
|
|
||||||
byte[] buffer = new byte[65507];
|
byte[] buffer = new byte[65507];
|
||||||
//serverSocket.setSoTimeout(3000);
|
//serverSocket.setSoTimeout(3000);
|
||||||
while (true) {
|
while (true) {
|
||||||
|
@ -26,6 +30,11 @@ public class UdpUnicastServer implements Runnable{
|
||||||
|
|
||||||
String receivedMessage = new String(datagramPacket.getData(), 0, datagramPacket.getLength());
|
String receivedMessage = new String(datagramPacket.getData(), 0, datagramPacket.getLength());
|
||||||
System.out.println(receivedMessage);
|
System.out.println(receivedMessage);
|
||||||
|
|
||||||
|
Thread t = new Thread( new TraitementCmdListe(receivedMessage, semaphore) );
|
||||||
|
t.start();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (SocketException e) {
|
} catch (SocketException e) {
|
||||||
|
@ -35,4 +44,5 @@ public class UdpUnicastServer implements Runnable{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,19 +0,0 @@
|
||||||
package nom;
|
|
||||||
|
|
||||||
import java.util.concurrent.ExecutorService;
|
|
||||||
import java.util.concurrent.Executors;
|
|
||||||
|
|
||||||
public class MainUDP {
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
int portServer = 7001;
|
|
||||||
int portClient = 7000;
|
|
||||||
|
|
||||||
UdpUnicastServer server = new UdpUnicastServer(portServer);
|
|
||||||
UdpUnicastClient client = new UdpUnicastClient(portClient, portServer, "LocalHost");
|
|
||||||
|
|
||||||
ExecutorService executorService = Executors.newFixedThreadPool(2);
|
|
||||||
executorService.submit(server);
|
|
||||||
executorService.submit(client);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
package nom;
|
|
||||||
|
|
||||||
public class TypeListeUtilisateur {
|
|
||||||
|
|
||||||
public String nom;
|
|
||||||
public String id;
|
|
||||||
public String IP;
|
|
||||||
}
|
|
Loading…
Reference in a new issue