Verification pseudo
This commit is contained in:
parent
b111994b72
commit
ae3dba26cb
8 changed files with 168 additions and 12 deletions
Binary file not shown.
|
@ -36,7 +36,7 @@ public class ChatApp {
|
||||||
}
|
}
|
||||||
//ip.getHostAddress();
|
//ip.getHostAddress();
|
||||||
this.me = new Utilisateur(pseudo,port,ip);
|
this.me = new Utilisateur(pseudo,port,ip);
|
||||||
this.actifUsers.add(me);
|
this.actifUsers.add(getMe());
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Ajouter des utilisateurs actifs dans l'attribut liste 'actifUsers'
|
* Ajouter des utilisateurs actifs dans l'attribut liste 'actifUsers'
|
||||||
|
@ -46,14 +46,52 @@ public class ChatApp {
|
||||||
public void addList(Utilisateur u) {
|
public void addList(Utilisateur u) {
|
||||||
this.actifUsers.add(u);
|
this.actifUsers.add(u);
|
||||||
}
|
}
|
||||||
|
public Utilisateur getPseudoList(String pseudo) {
|
||||||
|
for(Utilisateur elem: this.actifUsers)
|
||||||
|
{
|
||||||
|
if (elem.getPseudo().equals(pseudo) ) {
|
||||||
|
return elem ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null ;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Supprimer de la liste des utilisateurs actifs 'actifUsers' un certain utilisateur
|
* Supprimer de la liste des utilisateurs actifs 'actifUsers' un certain utilisateur
|
||||||
*
|
*
|
||||||
* @param u on va supprimer cet utilisateur dans la liste
|
* @param u on va supprimer cet utilisateur dans la liste
|
||||||
*/
|
*/
|
||||||
public void supprimerList(Utilisateur u) {
|
public void supprimerList(Utilisateur u) {
|
||||||
this.actifUsers.remove(u);
|
Boolean Sup = false ;
|
||||||
|
for(Utilisateur elem: this.actifUsers)
|
||||||
|
{
|
||||||
|
if (elem.equals(u) ) {
|
||||||
|
this.actifUsers.remove(elem);
|
||||||
|
Sup = true ;
|
||||||
|
this.afficherListeUtilisateurs();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!Sup) {
|
||||||
|
System.out.println("Tentative de retirer un objet non contenu dans la liste");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Modifie le nom d'un utilisateur dans la liste des utilisateurs actifs 'actifUsers'
|
||||||
|
*
|
||||||
|
* @param ancien correspond au pseudo remplacer
|
||||||
|
* @param nouveau correspond au nouveau pseudo
|
||||||
|
*/
|
||||||
|
public void modifierList(String ancien , String nouveau) {
|
||||||
|
for(Utilisateur elem: this.actifUsers)
|
||||||
|
{
|
||||||
|
if (ancien.equals( elem.getPseudo() ) ) {
|
||||||
|
this.actifUsers.remove(elem);
|
||||||
|
elem.setPseudo(nouveau);;
|
||||||
|
this.addList(elem);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.afficherListeUtilisateurs();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -71,6 +109,21 @@ public class ChatApp {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Modification du pseudo de l'utilisateur
|
||||||
|
* Envoie en broadcast son ancien pseudo et son nouveau
|
||||||
|
*
|
||||||
|
* @param nouveau correspond au nouveau pseudo
|
||||||
|
*/
|
||||||
|
public void modifierPseudo(String nouveau) throws IOException {
|
||||||
|
// @ de broadcast du réseau de l'utilisateur me
|
||||||
|
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 ;
|
||||||
|
UDPEchange.connexion(broadcastAdress,broadcastMessage, port);
|
||||||
|
}
|
||||||
|
|
||||||
public void afficherListeUtilisateurs() {
|
public void afficherListeUtilisateurs() {
|
||||||
System.out.println ("Liste des utilisateurs actifs : ");
|
System.out.println ("Liste des utilisateurs actifs : ");
|
||||||
for(Utilisateur elem: this.actifUsers)
|
for(Utilisateur elem: this.actifUsers)
|
||||||
|
@ -79,18 +132,35 @@ public class ChatApp {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Methode appelée lors de la connexion d'un nouvel utilisateur.
|
||||||
|
* Il va prévenir les utilisateurs du réseau de son arrivée.
|
||||||
|
*
|
||||||
|
*/
|
||||||
public void connexion() throws IOException {
|
public void connexion() throws IOException {
|
||||||
// @ de broadcast du réseau de l'utilisateur me
|
// @ de broadcast du réseau de l'utilisateur me
|
||||||
InetAddress broadcastAdress = InetAddress.getLoopbackAddress(); // A MODIFIER
|
InetAddress broadcastAdress = InetAddress.getLoopbackAddress(); // A MODIFIER
|
||||||
// Message que l'on envoie à tous les utilisateurs actifs
|
// Message que l'on envoie à tous les utilisateurs actifs
|
||||||
String broadcastMessage = "Connexion\n" + this.me.toString() ;
|
String broadcastMessage = "Connexion\n" + this.getMe().toString() ;
|
||||||
Integer port = 1234 ;
|
Integer port = 1234 ;
|
||||||
UDPEchange.connexion(broadcastAdress,broadcastMessage, port);
|
UDPEchange.connexion(broadcastAdress,broadcastMessage, port);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Methode appelée lors de la déconnexion de l'utilisateur.
|
||||||
|
* Il va prévenir les utilisateurs du réseau de son départ.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public void deconnexion() throws IOException {
|
||||||
|
// @ de broadcast du réseau de l'utilisateur me
|
||||||
|
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 ;
|
||||||
|
UDPEchange.connexion(broadcastAdress,broadcastMessage, port);
|
||||||
|
}
|
||||||
|
|
||||||
public static void main (String[] args) {
|
public static void main (String[] args) throws IOException {
|
||||||
//Integer p = 2345 ;
|
//Integer p = 2345 ;
|
||||||
ChatApp app = new ChatApp(args[0],Integer.parseInt(args[1])) ;
|
ChatApp app = new ChatApp(args[0],Integer.parseInt(args[1])) ;
|
||||||
|
|
||||||
|
@ -101,6 +171,29 @@ public class ChatApp {
|
||||||
}
|
}
|
||||||
ExecutorService exec = Executors.newFixedThreadPool(1000);
|
ExecutorService exec = Executors.newFixedThreadPool(1000);
|
||||||
exec.submit(new Runner(app));
|
exec.submit(new Runner(app));
|
||||||
|
if (app.getMe().getPort() == 4000) {
|
||||||
|
try {
|
||||||
|
Thread.sleep(2000);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
app.modifierPseudo("Jean");
|
||||||
|
try {
|
||||||
|
Thread.sleep(2000);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
app.modifierPseudo("Eliot");
|
||||||
|
/*try {
|
||||||
|
Thread.sleep(2000);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
app.deconnexion(); */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public Utilisateur getMe() {
|
||||||
|
return me;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -111,7 +204,9 @@ class Runner implements Runnable {
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
if (app.getMe().getPort() != 4000) {
|
||||||
UDPEchange.ecouteUDP(app);
|
UDPEchange.ecouteUDP(app);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -66,6 +66,16 @@ public class UDPEchange {
|
||||||
exec.submit(new RunnerUDP(data,app));
|
exec.submit(new RunnerUDP(data,app));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void envoiUnicast( InetAddress broadcastAdress , String broadcastMessage , Integer port) throws IOException {
|
||||||
|
// Envoie en broadcast à tous les utilsateurs
|
||||||
|
DatagramSocket socket = new DatagramSocket();
|
||||||
|
byte[]buffer = broadcastMessage.getBytes();
|
||||||
|
DatagramPacket packet = new DatagramPacket( buffer, buffer.length, InetAddress.getLoopbackAddress(), port );
|
||||||
|
socket.send(packet);
|
||||||
|
socket.close();
|
||||||
|
System.out.println(broadcastMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -97,18 +107,64 @@ class RunnerUDP implements Runnable {
|
||||||
System.out.println(received);
|
System.out.println(received);
|
||||||
String Type = received.split("\n")[0];
|
String Type = received.split("\n")[0];
|
||||||
if (Type.equals("Connexion")) { // un utilisateur vient d'arriver sur le reseau
|
if (Type.equals("Connexion")) { // un utilisateur vient d'arriver sur le reseau
|
||||||
app.addList(Utilisateur.stringToUtilisateur(received.split("\n")[1]));
|
System.out.println("Reception d'une demande de connexion");
|
||||||
|
Utilisateur u = Utilisateur.stringToUtilisateur(received.split("\n")[1]);
|
||||||
|
String reponse = "Reponse Connexion\n";
|
||||||
|
if (!app.verifierUnicite(u.getPseudo())) {
|
||||||
|
System.out.println("Pseudo deja present dans la liste");
|
||||||
|
reponse += "false\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
System.out.println("Ajout d'un nouvel utilisateur dans la liste des Utilisateurs");
|
||||||
|
app.addList(u);
|
||||||
|
reponse += "true\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
reponse += app.getMe().toString();
|
||||||
|
try {
|
||||||
|
UDPEchange.envoiUnicast(u.getIp(),reponse,u.getPort());
|
||||||
|
}catch(IOException e)
|
||||||
|
{
|
||||||
|
System.out.println("Echec de l'envoi du message");
|
||||||
|
}
|
||||||
|
|
||||||
app.afficherListeUtilisateurs();
|
app.afficherListeUtilisateurs();
|
||||||
}
|
}
|
||||||
if (Type.equals("Reponse Connexion")) { // Un utilisateur te repond suite à ta demande de connexion
|
if (Type.equals("Reponse Connexion")) { // Un utilisateur te repond suite à ta demande de connexion
|
||||||
app.afficherListeUtilisateurs();
|
app.afficherListeUtilisateurs();
|
||||||
}
|
}
|
||||||
if (Type.equals("Modification Pseudo")) {
|
if (Type.equals("Modification Pseudo")) {
|
||||||
|
if(app.verifierUnicite(received.split("\n")[2])) {
|
||||||
|
app.modifierList(received.split("\n")[1],received.split("\n")[2]);
|
||||||
|
Utilisateur Destination = app.getPseudoList(received.split("\n")[1]);
|
||||||
|
String Message = "Bon Choix Pseudo\n" + received.split("\n")[2] ;
|
||||||
|
try {
|
||||||
|
UDPEchange.envoiUnicast(Destination.getIp(),Message, 1234);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Utilisateur Destination = app.getPseudoList(received.split("\n")[1]);
|
||||||
|
String Message = "Mauvais Choix Pseudo\n" ;
|
||||||
|
try {
|
||||||
|
UDPEchange.envoiUnicast(Destination.getIp(),Message, 1234);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
app.afficherListeUtilisateurs();
|
app.afficherListeUtilisateurs();
|
||||||
}
|
}
|
||||||
|
if (Type.equals("Mauvais Choix Pseudo")) {
|
||||||
|
System.out.println("Ce choix de pseudo est déjà pris il te faut en choisir un autre");
|
||||||
|
}
|
||||||
|
if (Type.equals("Bon Choix Pseudo")) {
|
||||||
|
app.supprimerList(app.getMe());
|
||||||
|
app.getMe().setPseudo(received.split("\n")[1]);
|
||||||
|
app.addList(app.getMe());
|
||||||
|
}
|
||||||
if (Type.equals("Deconnexion")) {
|
if (Type.equals("Deconnexion")) {
|
||||||
app.supprimerList(Utilisateur.stringToUtilisateur(received.split("\n")[1]));
|
app.supprimerList(Utilisateur.stringToUtilisateur(received.split("\n")[1]));
|
||||||
app.afficherListeUtilisateurs();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
|
@ -1,7 +1,7 @@
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.net.UnknownHostException;
|
import java.net.UnknownHostException;
|
||||||
|
|
||||||
public class Utilisateur {
|
public class Utilisateur extends Object {
|
||||||
|
|
||||||
private String pseudo ;
|
private String pseudo ;
|
||||||
private Integer port;
|
private Integer port;
|
||||||
|
@ -57,4 +57,9 @@ public class Utilisateur {
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Boolean equals(Utilisateur u) {
|
||||||
|
return this.getPseudo().equals( u.getPseudo() ) ;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue