Fin de connexion et deconnexion
This commit is contained in:
parent
e419412d8f
commit
5997873d6f
8 changed files with 102 additions and 13 deletions
Binary file not shown.
|
@ -15,6 +15,17 @@ public class ChatApp {
|
|||
|
||||
/* Liste des utilisateurs actifs */
|
||||
private ListUtilisateurs actifUsers ;
|
||||
private static ArrayList<Integer> ListPort = new ArrayList<Integer>();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static ArrayList<Integer> getListPort() {
|
||||
return ListPort;
|
||||
}
|
||||
|
||||
/* ChatApp est associé à un utilisateur */
|
||||
private Utilisateur me;
|
||||
|
@ -52,9 +63,11 @@ public class ChatApp {
|
|||
InetAddress broadcastAdress = InetAddress.getLoopbackAddress(); // A MODIFIER
|
||||
// Message que l'on envoie à tous les utilisateurs actifs
|
||||
String broadcastMessage = "Modification Pseudo\n" + this.getMe().getPseudo() + "\n" + nouveau + "\n";
|
||||
Integer port = 1234 ;
|
||||
for(Integer p : ListPort ) {
|
||||
Integer port = p ;
|
||||
UDPEchange.connexion(broadcastAdress,broadcastMessage, port);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
@ -67,8 +80,10 @@ public class ChatApp {
|
|||
InetAddress broadcastAdress = InetAddress.getLoopbackAddress(); // A MODIFIER
|
||||
// Message que l'on envoie à tous les utilisateurs actifs
|
||||
String broadcastMessage = "Connexion\n" + this.getMe().toString() ;
|
||||
Integer port = 1234 ;
|
||||
UDPEchange.connexion(broadcastAdress,broadcastMessage, port);
|
||||
for(Integer p : ListPort ) {
|
||||
Integer port = p ;
|
||||
UDPEchange.connexion(broadcastAdress,broadcastMessage, p);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -81,21 +96,26 @@ public class ChatApp {
|
|||
InetAddress broadcastAdress = InetAddress.getLoopbackAddress(); // A MODIFIER
|
||||
// Message que l'on envoie à tous les utilisateurs actifs
|
||||
String broadcastMessage = "Deconnexion\n" + this.getMe().toString() ;
|
||||
Integer port = 1234 ;
|
||||
for(Integer p : ListPort ) {
|
||||
Integer port = p ;
|
||||
UDPEchange.connexion(broadcastAdress,broadcastMessage, port);
|
||||
}
|
||||
}
|
||||
|
||||
public static void main (String[] args) throws IOException {
|
||||
//Integer p = 2345 ;
|
||||
ChatApp app = new ChatApp(args[0],Integer.parseInt(args[1])) ;
|
||||
|
||||
ListPort.add(1234);
|
||||
ListPort.add(3000);
|
||||
ListPort.add(4000);
|
||||
ExecutorService exec = Executors.newFixedThreadPool(1000);
|
||||
exec.submit(new Runner(app));
|
||||
try {
|
||||
app.connexion();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
ExecutorService exec = Executors.newFixedThreadPool(1000);
|
||||
exec.submit(new Runner(app));
|
||||
|
||||
if (app.getMe().getPort() == 4000) {
|
||||
try {
|
||||
Thread.sleep(2000);
|
||||
|
@ -124,6 +144,7 @@ public class ChatApp {
|
|||
public ListUtilisateurs getActifUsers() {
|
||||
return actifUsers;
|
||||
}
|
||||
|
||||
}
|
||||
class Runner implements Runnable {
|
||||
ChatApp app ;
|
||||
|
|
Binary file not shown.
|
@ -13,9 +13,13 @@ public class ListUtilisateurs {
|
|||
* @param u on va rajouter cet utilisateur dans la liste
|
||||
*/
|
||||
public void addList(Utilisateur u) {
|
||||
if((verifierUnicite(u.getPseudo()))) {
|
||||
this.actifUsers.add(u);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Recuperer un utilisateur à partir de son pseudo
|
||||
*
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -32,7 +32,12 @@ public class UDPEchange {
|
|||
DatagramPacket packet = new DatagramPacket( buffer, buffer.length, InetAddress.getLoopbackAddress(), port );
|
||||
socket.send(packet);
|
||||
socket.close();
|
||||
System.out.println("***********Message envoye***********");
|
||||
System.out.println("Dest Ip: " + broadcastAdress.toString());
|
||||
System.out.println("Dest port: " + port.toString());
|
||||
System.out.println("Contenu: ");
|
||||
System.out.println(broadcastMessage);
|
||||
System.out.println("************************************");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -49,11 +54,12 @@ public class UDPEchange {
|
|||
DatagramSocket socket = null;
|
||||
ExecutorService exec = Executors.newFixedThreadPool(1000);
|
||||
try {
|
||||
socket = new DatagramSocket(1234);
|
||||
socket = new DatagramSocket(app.getMe().getPort());
|
||||
} catch (SocketException e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
byte buffer[] = new byte[1024];
|
||||
System.out.println("Ecoute sur le port: "+app.getMe().getPort().toString());
|
||||
while(true)
|
||||
{
|
||||
DatagramPacket data = new DatagramPacket(buffer,buffer.length);
|
||||
|
@ -63,6 +69,7 @@ public class UDPEchange {
|
|||
e.printStackTrace();
|
||||
}
|
||||
// Un thread est lancé à chaque reception d'un message
|
||||
System.out.println("Message recu!");
|
||||
exec.submit(new RunnerUDP(data,app));
|
||||
}
|
||||
}
|
||||
|
@ -74,7 +81,12 @@ public class UDPEchange {
|
|||
DatagramPacket packet = new DatagramPacket( buffer, buffer.length, InetAddress.getLoopbackAddress(), port );
|
||||
socket.send(packet);
|
||||
socket.close();
|
||||
System.out.println("***********Message envoye***********");
|
||||
System.out.println("Dest Ip: " + broadcastAdress.toString());
|
||||
System.out.println("Dest port: " + port.toString());
|
||||
System.out.println("Contenu: ");
|
||||
System.out.println(broadcastMessage);
|
||||
System.out.println("************************************");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -104,8 +116,16 @@ class RunnerUDP implements Runnable {
|
|||
public void run() {
|
||||
System.out.println("Thread started");
|
||||
String received = new String(data.getData(), 0, data.getLength());
|
||||
System.out.println("***********Message recu***********");
|
||||
System.out.println(received);
|
||||
System.out.println("**********************************");
|
||||
String Type = received.split("\n")[0];
|
||||
|
||||
//****************************************
|
||||
//*****************************************
|
||||
//Demande de connexion
|
||||
//****************************************
|
||||
//****************************************
|
||||
if (Type.equals("Connexion")) { // un utilisateur vient d'arriver sur le reseau
|
||||
System.out.println("Reception d'une demande de connexion");
|
||||
Utilisateur u = Utilisateur.stringToUtilisateur(received.split("\n")[1]);
|
||||
|
@ -121,6 +141,7 @@ class RunnerUDP implements Runnable {
|
|||
|
||||
}
|
||||
reponse += app.getMe().toString();
|
||||
|
||||
try {
|
||||
UDPEchange.envoiUnicast(u.getIp(),reponse,u.getPort());
|
||||
}catch(IOException e)
|
||||
|
@ -130,9 +151,31 @@ class RunnerUDP implements Runnable {
|
|||
|
||||
( app.getActifUsers() ).afficherListeUtilisateurs();
|
||||
}
|
||||
//****************************************
|
||||
//*****************************************
|
||||
//Reponse d'une connexion
|
||||
//****************************************
|
||||
//****************************************
|
||||
|
||||
if (Type.equals("Reponse Connexion")) { // Un utilisateur te repond suite à ta demande de connexion
|
||||
( app.getActifUsers() ).afficherListeUtilisateurs();
|
||||
|
||||
if((received.split("\n")[1]).equals("true")) {
|
||||
Utilisateur u = Utilisateur.stringToUtilisateur(received.split("\n")[2]);
|
||||
app.getActifUsers().addList(u);
|
||||
app.getActifUsers().afficherListeUtilisateurs();
|
||||
}
|
||||
else {
|
||||
System.out.println("Pseudo deja pris");
|
||||
System.out.println("Connexion echoue");
|
||||
}
|
||||
}
|
||||
|
||||
//****************************************
|
||||
//*****************************************
|
||||
//Demande de modification d'un pseudo
|
||||
//****************************************
|
||||
//****************************************
|
||||
|
||||
if (Type.equals("Modification Pseudo")) {
|
||||
if(( app.getActifUsers() ).verifierUnicite(received.split("\n")[2])) {
|
||||
( app.getActifUsers() ).modifierList(received.split("\n")[1],received.split("\n")[2]);
|
||||
|
@ -155,14 +198,35 @@ class RunnerUDP implements Runnable {
|
|||
}
|
||||
( app.getActifUsers() ).afficherListeUtilisateurs();
|
||||
}
|
||||
//****************************************
|
||||
//*****************************************
|
||||
//Mauvais choix d'un pseudo
|
||||
//****************************************
|
||||
//****************************************
|
||||
|
||||
|
||||
if (Type.equals("Mauvais Choix Pseudo")) {
|
||||
System.out.println("Ce choix de pseudo est déjà pris il te faut en choisir un autre");
|
||||
}
|
||||
|
||||
//****************************************
|
||||
//*****************************************
|
||||
//Bon choix d'un pseudo
|
||||
//****************************************
|
||||
//****************************************
|
||||
|
||||
if (Type.equals("Bon Choix Pseudo")) {
|
||||
( app.getActifUsers() ).supprimerList(app.getMe());
|
||||
app.getMe().setPseudo(received.split("\n")[1]);
|
||||
( app.getActifUsers() ).addList(app.getMe());
|
||||
}
|
||||
|
||||
//****************************************
|
||||
//*****************************************
|
||||
//Demande d'une deconnexion
|
||||
//****************************************
|
||||
//****************************************
|
||||
|
||||
if (Type.equals("Deconnexion")) {
|
||||
( app.getActifUsers() ).supprimerList(Utilisateur.stringToUtilisateur(received.split("\n")[1]));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue