From 39b24741a38e4709c04c70326ac0bea550262279 Mon Sep 17 00:00:00 2001 From: Alexandre Gonzalvez Date: Wed, 2 Dec 2020 12:06:39 +0100 Subject: [PATCH] Changement pseudo, notif other user, pick a chat --- Application/Clavardage/bin/.gitignore | 1 - Application/Clavardage/bin/RemoteUser.class | Bin 0 -> 1520 bytes Application/Clavardage/bin/User.class | Bin 6590 -> 9102 bytes .../Clavardage/bin/UserListeningThread.class | Bin 2445 -> 3165 bytes Application/Clavardage/src/User.java | 197 ++++++++++++------ .../Clavardage/src/UserListeningThread.java | 79 +++++-- 6 files changed, 193 insertions(+), 84 deletions(-) delete mode 100644 Application/Clavardage/bin/.gitignore create mode 100644 Application/Clavardage/bin/RemoteUser.class diff --git a/Application/Clavardage/bin/.gitignore b/Application/Clavardage/bin/.gitignore deleted file mode 100644 index 2d535ad..0000000 --- a/Application/Clavardage/bin/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/RemoteUser.class diff --git a/Application/Clavardage/bin/RemoteUser.class b/Application/Clavardage/bin/RemoteUser.class new file mode 100644 index 0000000000000000000000000000000000000000..cc1ce98ac0ba4a3fe4eb861e83052ed390478096 GIT binary patch literal 1520 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 MoJzmrp&ESuFJpK6Jpcdz literal 2445 zcmZuyTXz#x6#h<{=A`KqXt}ktNDzdiEflqYq=*st`TEZ`|W=fycJ2JX8(cwu20yA?;n~S9ScX4shv`pua zKyxHn)*p0owAJM)MTZ6aN9?o_LKSK?NN57O8Mz^S zEMo{XB<+-*8P;>A+LwfWXVT2mp6ly>X)r#)vxa*kV?+fvk*Zw55~zwqhb5W>Ho7@j zhSSllJNiUUpBc1M(}oj5Gd4@K@SaLs!+qEy5S%cazO0>dTnh=Mv{l3X*ybG_PNx$C z0*#TV7l1OG;D_>@k)9fFcGEz=giNlpK2Qk40i>WkC zh18THOyXX}G9JyyXqZuW)TsFKMj>qnVH5M1W8@iZ56)@GDbA?giqBE1gpP)S$|{gC ztO;jQCHlOo)_H-=ioYwjPKnkpXn0Z4+Mj0)YuKYNYj_101UBRyJG;yka%5@Dt*t0& z+_p1@Zm~eG;SGt`1?tOlu5_s3O}r(bjd{Am3P*P&oK|i1j)r$ti&m#HcHRi$B4^w& z(+Z~xOY{_|O_yhlKvOxNyT_0kXtZ2zjEX_Pv%pwkd|ZuZ-)Ni&nwHnAD;g}d@v^bI zyO+kQO((C$*M@R16~v)}q=KRtV@l9B3GVht4SRRVZ=E}kdiAV3tR=3HuY-0Wmoko- zYN9u)VY*xa5B}W>UToz{P{mh@xv1xWD<9VqL4IqvJHfp=uWfCcN2s;^7V2)eN~`%@ z&h7jtohO%%;R*wemcoA!{j>gn#Jsl|X8?ezc?>j>Y-H0lYTtMSU>rK=ZvB~>| z=dnF`4Zrrb7qRmiZq*C?66{?-`$&8H?Ro6(Yui=CgVzv>`J4Pj?B(u}-XC#r0r8QB z?s*(rK+j0~JQ77Dix?byz*iQ4H!SW2n z0xE{4KoME>$v64yJMPS5HYVGeWD#>JqF_^yK`T=?@lp}5UR~^NE8^{?=-#8VvL7$F z8wAcr8aMM9>cjyY<)I*W(WSn9{k0-fAiKq*eiV4@0KsiGO--+%I6aT@8bg& zs|9{s!e#o7;s<<)D_nKrdwhhC8QmdL;1WKe&NQa*DL&)s9H-sq_<|?bnZcKgH9+rc zaFsVC{i_?7$+NGR( remoteUserList = new ArrayList(); + protected ArrayList userChatList = new ArrayList(); + + protected UserListeningThread threadListeningUDP; public Boolean stopListeningUDPThread=false; /* @@ -21,7 +30,7 @@ public class User{ * description : On récupère l'adresse de la machine, le numéro de port à utiliser(TODO), on demande un pseudo à l'utilisateur * que l'on vérifie, une fois validé, l'utilisateur devient actif (Début de l'écoute UDP pour les pseudos) */ - public User(int nport) throws IOException{ + public User(int portUDPsend,int portUDPlistening,int portTCP) throws IOException{ //localUser try { @@ -31,37 +40,23 @@ public class User{ System.out.println("Could not find local address!"); } - this.nport = nport; + this.portUDPsend = portUDPsend; + this.portUDPlistening = portUDPlistening; + this.portTCP = portTCP; this.setPseudo(); - this.actif = true; + this.setActif(true); + - UserListeningThread th = new UserListeningThread("UDP Listening thread",this); - th.start(); - //notify_remote_user(); //ask_change_pseudo(); + /* boolean wantstochange = true; //A faire avec un bouton dans SWING if(wantstochange) { //changePseudo(); } - - DatagramSocket dgramSocket= null; - try { - dgramSocket= new DatagramSocket(this.nport,this.addIP); - } catch (IOException e) { - e.printStackTrace(); - } - - String toSend = this.addIP.toString()+":"+this.nport+":"+this.pseudo+":test"; - //System.out.println("Message avant envoi " +toSend); - DatagramPacket outPacket= new DatagramPacket(toSend.getBytes(), toSend.length(),this.addIP, 12229); - - try { - dgramSocket.send(outPacket); - } catch (IOException e) { - e.printStackTrace(); - } + */ + //this.waitProgramtoStop() } /* remoteUser @@ -72,7 +67,7 @@ public class User{ * description : On récupère l'adresse de la machine, le numéro de port à utiliser(TODO), on demande un pseudo à l'utilisateur * que l'on vérifie, une fois validé, l'utilisateur devient actif (Début de l'écoute UDP pour les pseudos) */ - public User(int nport,String pseudo) { + public User(int portUDPsend,int portUDPlistening, int portTCP,String pseudo) { try { this.addIP = InetAddress.getLocalHost(); @@ -81,10 +76,10 @@ public class User{ System.out.println("Could not find local address!"); } this.pseudo = pseudo; - this.nport = nport; - this.actif = true; - UserListeningThread th = new UserListeningThread("UDP Listening thread",this); - th.start(); + this.portUDPsend = portUDPsend; + this.portUDPlistening = portUDPlistening; + this.portTCP = portTCP; + this.setActif(true); } @@ -104,37 +99,78 @@ public class User{ return pseudo; } - public int getNport() { - return nport; + public int getPortTCP() { + return portTCP; } - public void setNport(int nport) { - this.nport = nport; + public void setPortTCP(int portTCP) { + this.portTCP = portTCP; + } + + public int getPortUDPlistening() { + return portUDPlistening; } + public void setPortUDPlistening(int portUDPlistening) { + this.portUDPlistening = portUDPlistening; + } + + public int getPortUDPsend() { + return portUDPsend; + } + + + public void setPortUDPsend(int portUDPsend) { + this.portUDPsend = portUDPsend; + } + public boolean isActif() { return actif; } public void setActif(boolean actif) { - this.actif = actif; + notify_remote_user(); + this.threadListeningUDP = new UserListeningThread("UDP Listening thread",this); + this.threadListeningUDP.start(); + + this.actif=true; + } + + public void notify_remote_user() { + DatagramSocket dgramSocket= null; + try { + dgramSocket= new DatagramSocket(portUDPsend,this.addIP); + } catch (IOException e) { + e.printStackTrace(); + } + + String toSend = this.addIP.toString()+":"+this.portTCP+":"+this.pseudo+":test"; + //System.out.println("Message avant envoi " +toSend); + DatagramPacket outPacket= new DatagramPacket(toSend.getBytes(), toSend.length(),this.addIP, portUDPlistening_remoteUsr1); + + try { + dgramSocket.send(outPacket); + } catch (IOException e) { + e.printStackTrace(); + } + dgramSocket.close(); } public void setPseudo() throws IOException { - Scanner myObj = new Scanner(System.in); // Create a Scanner object + Scanner sc1 = new Scanner(System.in); // Create a Scanner object System.out.println("Enter nickname :"); - String tmpPseudo = myObj.nextLine(); // Read user input + String tmpPseudo = sc1.nextLine(); // Read user input while(!(this.validatePseudo(tmpPseudo))) { System.out.println("Enter another nickname :"); - tmpPseudo = myObj.nextLine(); // Read user input + tmpPseudo = sc1.nextLine(); // Read user input } this.pseudo = tmpPseudo; - myObj.close(); + //sc1.close(); System.out.println("Your nickname : " + tmpPseudo + " is valid !"); } @@ -143,17 +179,18 @@ public class User{ // Call broadcast InetAddress broadcastIP = InetAddress.getLocalHost(); // change to broadcast - - DatagramSocket dgramSocket = new DatagramSocket(this.nport,this.addIP); + //System.out.println(broadcastIP); + DatagramSocket dgramSocket = new DatagramSocket(this.portUDPsend,this.addIP); byte[] buffer = new byte[256]; - DatagramPacket outPacket= new DatagramPacket(tmpPseudo.getBytes(), tmpPseudo.length(),broadcastIP, 12228); + String toSend = this.getAddIP()+":"+this.portUDPsend+":test"; + DatagramPacket outPacket= new DatagramPacket(toSend.getBytes(), toSend.length(),broadcastIP, portUDPlistening_remoteUsr1); dgramSocket.send(outPacket); Boolean valid = true; - + Date oldDate = new Date(); Date newDate = new Date(); @@ -164,7 +201,6 @@ public class User{ Boolean arecu; System.out.print("Wait for pseudo validation ...\n"); - System.out.println(".............."); int nbReponse =0; while( (newDate.getTime()-oldDate.getTime()) < 5000 && valid) { @@ -198,7 +234,6 @@ public class User{ newDate = new Date(); } - System.out.println(".............."); dgramSocket.close(); if(!valid) { @@ -212,50 +247,88 @@ public class User{ RemoteUser tmpRemoteUser = new RemoteUser(remoteUserIP,remoteUserPort,remoteUserPseudo); int index = this.remoteUserList.indexOf(tmpRemoteUser); if(index!=-1) { - System.out.println("Mise a jour, l'adresse IP(port) de cet utilisateur est déjà présente :"+remoteUserIP+"("+remoteUserPort+")"); + System.out.println("("+this.pseudo+") - "+"MAJ, IP(port) of user : "+remoteUserPseudo+" => "+remoteUserIP+"("+remoteUserPort+")"); this.remoteUserList.set(index,tmpRemoteUser); } else { - System.out.println("Ajout de l'utilisateur ayant pour IP(port) :"+remoteUserIP+"("+remoteUserPort+")"); + System.out.println("("+this.pseudo+") - "+"Add new user IP(port) of user : "+remoteUserPseudo+" => "+remoteUserIP+"("+remoteUserPort+")"); this.remoteUserList.add(tmpRemoteUser); } } // change pseudo - /* + private void changePseudo() throws IOException { //seule différence avec setPseudo c'est qu'on check si on remet pas le même String oldPseudo = this.pseudo; //Saves the old one for comparison - Scanner myObj = new Scanner(System.in); // Create a Scanner object + Scanner sc3 = new Scanner(System.in); // Create a Scanner object System.out.println("Enter new nickname :"); - String tmpPseudo = myObj.nextLine(); // Read user input + String tmpPseudo = sc3.nextLine(); // Read user input - while(!(this.validatePseudo(tmpPseudo)) & tmpPseudo.compareTo(oldPseudo) == 0) { + while(!(this.validatePseudo(tmpPseudo)) || tmpPseudo.equals(oldPseudo)) { System.out.println("Enter another nickname :"); - tmpPseudo = myObj.nextLine(); // Read user input + tmpPseudo = sc3.nextLine(); // Read user input } this.pseudo = tmpPseudo; - myObj.close(); + //myObj.close(); System.out.println("Your new nickname : " + tmpPseudo + " is valid !"); - //notifyothers(); //jsp comment elle s'appelle -}*/ + notify_remote_user(); +} + public void printRemoteUserList() { + System.out.println("Internal list of remote users:\n"); - public static void main(String[] args) throws IOException { - User usr1 = new User(12228,"Mike"); + for(int i=0; i= 0 && index