Browse Source

Version fonctionnelle, peut rester quelques bugs mineurs

Paul Faure 3 years ago
parent
commit
ab37cae323

BIN
build/libs/Clavardage-1.0-all.jar View File


+ 22
- 21
src/main/java/app/insa/clav/Core/DataBaseAccess.java View File

@@ -21,17 +21,17 @@ public class DataBaseAccess {
21 21
         try {
22 22
             Class.forName("com.mysql.jdbc.Driver");
23 23
         } catch (ClassNotFoundException e) {
24
-            e.printStackTrace();
24
+            System.out.println("Erreur lors de la récupération de la classe dans DataBaseAccess");
25 25
         }
26 26
         try {
27 27
             String urlBdd = "jdbc:mysql://" + addr + ":3306/testDBChat?useSSL=false";
28
-            System.out.println("Tentative de connection à : " + urlBdd);
28
+            //System.out.println("Tentative de connection à : " + urlBdd);
29 29
             con = DriverManager.getConnection(urlBdd, user, mdp);
30 30
             //con = DriverManager.getConnection("jdbc:mysql://srv-bdens.insa-toulouse.fr:3306/tp_servlet_013?useSSL=false", "tp_servlet_013", "eiN3ahng");
31 31
         } catch (SQLException throwables) {
32
-            throwables.printStackTrace();
32
+            System.out.println("Erreur lors de la connexion à la BDD");
33 33
         }
34
-        System.out.println(con.toString());
34
+        //System.out.println(con.toString());
35 35
     }
36 36
 
37 37
     /** Used to get Instance/Create Instance of DBAccess if necessary
@@ -47,7 +47,10 @@ public class DataBaseAccess {
47 47
     }
48 48
 
49 49
     public static DataBaseAccess getInstance() {
50
-            return instance;
50
+        if (instance == null) {
51
+            System.out.println("ATTENTION : DataBaseAccess null renvoyé");
52
+        }
53
+        return instance;
51 54
     }
52 55
 
53 56
     /**
@@ -68,7 +71,7 @@ public class DataBaseAccess {
68 71
             }
69 72
 
70 73
         } catch (SQLException throwables) {
71
-            throwables.printStackTrace();
74
+            System.out.println("Erreur lors de la requette pseudo from login avec " + login);
72 75
         }
73 76
         return pseudo;
74 77
     }
@@ -79,21 +82,19 @@ public class DataBaseAccess {
79 82
      * @return true if already exists, else false
80 83
      */
81 84
     public boolean isLoginUsed(String login) {
82
-        String loginAux = null;
85
+        boolean retour = false;
83 86
         String preparedQuery = "SELECT * FROM Utilisateurs WHERE login=?";
84 87
         PreparedStatement prSt = null;
85 88
         try {
86 89
             prSt = con.prepareStatement(preparedQuery);
87 90
             prSt.setString(1, login);
88 91
             ResultSet rs = prSt.executeQuery();
89
-            if (rs.first()) {
90
-                loginAux = rs.getString("login");
91
-            }
92
+            retour = rs.first();
92 93
         } catch (SQLException throwables) {
93
-            throwables.printStackTrace();
94
+            System.out.println("Erreur lors de la requette login used avec " + login);
94 95
         }
95
-        System.out.println("login Aux = " + loginAux);
96
-        return !(loginAux == null);
96
+        //System.out.println("login Aux = " + loginAux);
97
+        return retour;
97 98
     }
98 99
 
99 100
     /** Gets id of user identified by the login
@@ -110,7 +111,7 @@ public class DataBaseAccess {
110 111
                 id = rs.getInt(1);
111 112
             }
112 113
         } catch (SQLException throwables) {
113
-            throwables.printStackTrace();
114
+            System.out.println("Erreur lors de la récupération de l'ID avec " + login);
114 115
         }
115 116
         return id;
116 117
     }
@@ -130,6 +131,7 @@ public class DataBaseAccess {
130 131
             prSt.setString(2, pseudo);
131 132
             prSt.executeUpdate();
132 133
         } catch (SQLException throwables) {
134
+            System.out.println("Erreur lors de l'insertion de l'utilisateur " + login);
133 135
             throwables.printStackTrace();
134 136
         }
135 137
         preparedQuery = "SELECT * FROM Utilisateurs WHERE login=?";
@@ -142,7 +144,7 @@ public class DataBaseAccess {
142 144
                 id = rs.getInt("id");
143 145
             }
144 146
         } catch (SQLException throwables) {
145
-            throwables.printStackTrace();
147
+            System.out.println("Erreur lors de la récupération de l'ID de l'utilisateur créé avec " + login);
146 148
         }
147 149
         return id;
148 150
     }
@@ -171,7 +173,6 @@ public class DataBaseAccess {
171 173
             ResultSet rs = prSt.executeQuery();
172 174
         } catch (SQLException throwables) {
173 175
             res = false;
174
-            throwables.printStackTrace();
175 176
         }
176 177
         System.out.println(res);
177 178
         return res;
@@ -208,7 +209,7 @@ public class DataBaseAccess {
208 209
                 history.add(msg);
209 210
             }
210 211
         } catch (SQLException throwables) {
211
-            throwables.printStackTrace();
212
+            System.out.println("Erreur lors de la récupération de l'historique des messages entre " + id1 + " et " + id2);
212 213
         }
213 214
         return history;
214 215
     }
@@ -238,7 +239,7 @@ public class DataBaseAccess {
238 239
             prSt.setString(3,message.getPayload());
239 240
             prSt.executeUpdate();
240 241
         } catch (SQLException throwables) {
241
-            throwables.printStackTrace();
242
+            System.out.println("Erreur lors de l'ajout du message " + message.getPayload());
242 243
         }
243 244
     }
244 245
 
@@ -257,7 +258,7 @@ public class DataBaseAccess {
257 258
             idPetit = id1;
258 259
         }
259 260
         String nomTable = "Chat" + idPetit + "_" + idGrand;
260
-        String preparedQuery = "CREATE TABLE `" +  nomTable +"` (\n" + "`id` int NOT NULL,\n" + "  `sourceId` int NOT NULL,\n" +  "  `date` varchar(30) NOT NULL,\n" +  "  `payload` mediumtext NOT NULL\n" +  ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;";
261
+        String preparedQuery = "CREATE TABLE `" +  nomTable +"` (\n" + "`id` int NOT NULL,\n" + "  `sourceId` int NOT NULL,\n" +  "  `date` varchar(30) NOT NULL,\n" +  "  `payload` mediumtext NOT NULL\n" +  ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
261 262
         PreparedStatement prSt = null;
262 263
         System.out.println(preparedQuery);
263 264
         try {
@@ -270,7 +271,7 @@ public class DataBaseAccess {
270 271
             prSt = con.prepareStatement(preparedQuery);
271 272
             prSt.executeUpdate();
272 273
         } catch (SQLException throwables) {
273
-            throwables.printStackTrace();
274
+            System.out.println("Erreur lors de la creation de la table " + nomTable);
274 275
         }
275 276
     }
276 277
 
@@ -287,7 +288,7 @@ public class DataBaseAccess {
287 288
             prSt.setInt(2,id);
288 289
             prSt.executeUpdate();
289 290
         } catch (SQLException throwables) {
290
-            throwables.printStackTrace();
291
+            System.out.println("Erreur lors de la mise a jour du pseudo " + pseudo);
291 292
         }
292 293
     }
293 294
 }

+ 51
- 56
src/main/java/app/insa/clav/Core/Model.java View File

@@ -93,7 +93,7 @@ public class Model implements PropertyChangeListener{
93 93
      * @param mdpBdd
94 94
      */
95 95
     private Model(String addrBroadcast, int portListening, Application app, String addrBdd, String userBdd, String mdpBdd){
96
-        System.out.println("On essai de creer le modele");
96
+        //System.out.println("On essai de creer le modele");
97 97
         try {
98 98
             boolean founded = false;
99 99
             InetAddress addrBcst = InetAddress.getByName(addrBroadcast);
@@ -104,7 +104,7 @@ public class Model implements PropertyChangeListener{
104 104
                 NetworkInterface networkInterface = interfaces.nextElement();
105 105
                 if (!networkInterface.isLoopback() && networkInterface.isUp()) {
106 106
                     List<InterfaceAddress> addressesInterface = networkInterface.getInterfaceAddresses();
107
-                    System.out.println(addressesInterface.toString());
107
+                    //System.out.println(addressesInterface.toString());
108 108
                     Iterator<InterfaceAddress> addressesInterfaceIterator = addressesInterface.iterator();
109 109
                     while (addressesInterfaceIterator.hasNext()) {
110 110
                         InterfaceAddress addresseInterface = addressesInterfaceIterator.next();
@@ -116,17 +116,18 @@ public class Model implements PropertyChangeListener{
116 116
                 }
117 117
             }
118 118
 
119
-            System.out.println("Addresse de broadcast : " + addrBcst.toString() + "\nAddresse de l'utilisateur local : " + addrLocal.toString());
119
+            //System.out.println("Addresse de broadcast : " + addrBcst.toString() + "\nAddresse de l'utilisateur local : " + addrLocal.toString());
120 120
 
121 121
             this.user = new Utilisateurs("NA", addrLocal, 0, 0);
122 122
             this.UDPOut = new UDPOutput(addrBcst, this.user.getInetAddress(), portListening);
123 123
             this.UDPIn = new UDPInput(this.user.getInetAddress(), portListening);
124 124
             this.tcpListener = new TCPListener(this.user.getInetAddress(), user.getId());
125
+            this.user.setTcpListeningPort(this.tcpListener.getPort());
125 126
             this.tim= new Timer();
126 127
             this.support = new PropertyChangeSupport(this);
127 128
         }
128 129
         catch (IOException e){
129
-            System.out.println("IOException dans la creation de l'utilisateur local");
130
+            System.out.println("IOException dans la creation du modele");
130 131
             e.printStackTrace();
131 132
         }
132 133
         this.userList = new ArrayList<Utilisateurs>();
@@ -165,6 +166,9 @@ public class Model implements PropertyChangeListener{
165 166
      * @return instance of Model
166 167
      */
167 168
     public static Model getInstance(){
169
+        if (instance == null) {
170
+            System.out.println("ATTENTION : getInstance null renvoyé");
171
+        }
168 172
         return instance;
169 173
     }
170 174
 
@@ -214,33 +218,24 @@ public class Model implements PropertyChangeListener{
214 218
     }
215 219
 
216 220
     /**
217
-     * Envoi un messagePseudo de type 1 aux 3 machines de test
221
+     * Envoi un messagePseudo de type 1
218 222
      */
219 223
     public void sendPseudoBroadcast(){
220
-        //System.out.println("Send pseudo broadcast with" + this.user.getPseudo());
221
-        try {
222
-            MessagePseudo msg = new MessagePseudo(1, this.user.getInetAddress(), InetAddress.getLocalHost(), 0, this.user.getPseudo(),this.user.getId());
223
-            UDPOut.sendMsg(msg);
224
-        }
225
-        catch (UnknownHostException e){
226
-            System.out.println(("exception Trouver host dans sendPseudoBroadcast"));
227
-            e.printStackTrace();
228
-        }
224
+        //System.out.println("Demande de validaton du pseudo : " + this.user.getPseudo());
225
+        MessagePseudo msg = new MessagePseudo(1, this.user.getInetAddress(), this.user.getPseudo(), 0, this.user.getId());
226
+        //System.out.println("Message envoyé : " + msg.toString());
227
+        UDPOut.sendBrdcst(msg);
229 228
     }
230 229
 
231 230
     /**
232 231
      * Envoi message de type 4 (confirmation pseudo)
233 232
      */
234 233
     public void sendPseudoValideBroadcast(){
235
-        System.out.println("Send pseudo Valide broadcast with" + this.user.getPseudo());
236
-        try {
237
-            MessagePseudo msg = new MessagePseudo(4, this.user.getInetAddress(), InetAddress.getLocalHost(), 0, this.user.getPseudo(),this.user.getId());
238
-            UDPOut.sendMsg(msg);
239
-        }
240
-        catch (UnknownHostException e){
241
-            System.out.println(("exception Trouver host dans sendPseudoBroadcast"));
242
-            e.printStackTrace();
243
-        }
234
+        //System.out.println("Confirmation du pseudo : " + this.user.getPseudo());
235
+        MessagePseudo msg = new MessagePseudo(4, this.user.getInetAddress(), this.user.getPseudo(), this.user.getTcpListeningPort(), this.user.getId());
236
+        //System.out.println("Message envoyé : " + msg.toString());
237
+        UDPOut.sendBrdcst(msg);
238
+        //UDPIn.printFilter();
244 239
     }
245 240
 
246 241
     /**
@@ -283,7 +278,7 @@ public class Model implements PropertyChangeListener{
283 278
             for (Utilisateurs u : userList) {
284 279
                 if (u.getPseudo().equals(remotePseudo)) {
285 280
                     MessageInit msgInit = new MessageInit(7, user.getInetAddress(), u.getInetAddress(), u.getTcpListeningPort(), user.getId());
286
-                    TCPChatConnection tcpCo = new TCPChatConnection(msgInit, u.getId());
281
+                    TCPChatConnection tcpCo = new TCPChatConnection(msgInit,u.getInetAddress(), u.getTcpListeningPort(), u.getId());
287 282
                     listTCPConnection.add(tcpCo);
288 283
                 }
289 284
             }
@@ -322,7 +317,9 @@ public class Model implements PropertyChangeListener{
322 317
                 break;
323 318
             case 2 :
324 319
                 MessagePseudo msgP2 = (MessagePseudo) msg;
325
-                Utilisateurs newUser2 = new Utilisateurs(msgP2.pseudo,msgP2.srcIP,msgP2.id, msgP2.destPort);
320
+                //System.out.println("Message de type 2 reçu : " + msgP2.toString());
321
+                Utilisateurs newUser2 = new Utilisateurs(msgP2.pseudo,msgP2.srcIP,msgP2.id, msgP2.portEcouteTCP);
322
+                //System.out.println("Utilisateur créé : " + newUser2.toString());
326 323
                 if (!this.userList.contains(newUser2)) {
327 324
                     this.userList.add(newUser2);
328 325
                     Collections.sort(this.userList);
@@ -330,35 +327,33 @@ public class Model implements PropertyChangeListener{
330 327
                 }
331 328
                 break;
332 329
             case 3 :
333
-                System.out.println("Received message type 3");
334 330
                 MessagePseudo msgP3 = (MessagePseudo) msg;
335
-                Utilisateurs newUser3 = new Utilisateurs(msgP3.pseudo,msgP3.srcIP,msgP3.id, msgP3.destPort);
336
-                if (!this.userList.contains(newUser3)) {
337
-                    this.userList.add(newUser3);
338
-                    Collections.sort(this.userList);
339
-                    this.support.firePropertyChange("newUserConnected",-1,-2);
340
-                }
331
+                //System.out.println("Message de type 3 reçu : " + msgP3.toString());
341 332
                 this.isPseudoOk = false;
342 333
                 this.user.setPseudo(this.ancienPseudo);
343 334
                 this.ancienPseudo = "";
344 335
                 this.support.firePropertyChange("pseudoRefused",this.user.getPseudo(),this.ancienPseudo);
345
-                System.out.println("After pseudo refused");
336
+                //System.out.println("After pseudo refused");
346 337
                 break;
347 338
             case 4:
348 339
                 MessagePseudo msgP4 = (MessagePseudo) msg;
349
-                Utilisateurs newUser4 = new Utilisateurs(msgP4.pseudo,msgP4.srcIP,msgP4.id, msgP4.destPort);
350
-                this.userList.remove(newUser4);
351
-                this.userList.add(newUser4);
352
-                Collections.sort(this.userList);
353
-                this.support.firePropertyChange("newUserConnected",-1,newUser4.getId());
340
+                //System.out.println("Message de type 4 reçu : " + msgP4.toString());
341
+                if (msgP4.id != this.user.getId()) {
342
+                    Utilisateurs newUser4 = new Utilisateurs(msgP4.pseudo,msgP4.srcIP,msgP4.id, msgP4.portEcouteTCP);
343
+                    //System.out.println("Utilisateur créé : " + newUser4.toString());
344
+                    this.userList.remove(newUser4);
345
+                    this.userList.add(newUser4);
346
+                    Collections.sort(this.userList);
347
+                    this.support.firePropertyChange("newUserConnected",-1,newUser4.getId());
348
+                }
354 349
                 break;
355 350
             case 7 :
356 351
                 MessagePseudo msgP7 = (MessagePseudo) msg;
357
-                Utilisateurs User7 = new Utilisateurs(msgP7.pseudo,msgP7.srcIP,msgP7.id, msgP7.destPort);
352
+                Utilisateurs User7 = new Utilisateurs(msgP7.pseudo,msgP7.srcIP,msgP7.id, msgP7.portEcouteTCP);
358 353
                 this.userList.remove(User7);
359 354
                 this.support.firePropertyChange("newUserConnected",true,false);
360 355
             default :
361
-                System.out.println("Message de type inconnu");
356
+                //System.out.println("Message de type inconnu");
362 357
         }
363 358
     }
364 359
 
@@ -369,13 +364,19 @@ public class Model implements PropertyChangeListener{
369 364
      */
370 365
     private void handleType1Message(MessagePseudo msg){
371 366
         MessagePseudo msgResponse;
372
-        if (this.user.getPseudo().equals(msg.pseudo)){
373
-            msgResponse = new MessagePseudo(3, this.user.getInetAddress(), msg.srcIP, this.user.getTcpListeningPort(), this.user.getPseudo(),this.user.getId());
374
-        }
375
-        else{
376
-            msgResponse = new MessagePseudo(2, this.user.getInetAddress(),  msg.srcIP, this.user.getTcpListeningPort(), this.user.getPseudo(),this.user.getId());
367
+        //System.out.println("Message de type 1 reçu : " + msg.toString());
368
+        if (msg.id != this.user.getId()) {
369
+            if (this.user.getPseudo().equals(msg.pseudo)){
370
+                msgResponse = new MessagePseudo(3, null, msg.pseudo, 0, 0);
371
+                //System.out.println("Pseudo pas OK, on envoi : " + msgResponse.toString());
372
+            } else{
373
+                msgResponse = new MessagePseudo(2, this.user.getInetAddress(),this.user.getPseudo(), this.user.getTcpListeningPort(), this.user.getId());
374
+                //System.out.println("Pseudo OK, on envoi : " + msgResponse.toString());
375
+            }
376
+            this.UDPOut.sendMsg(msgResponse, msg.srcIP);
377
+        } else {
378
+            //System.out.println("Moi-même -> IGNORED");
377 379
         }
378
-        this.UDPOut.sendMsg(msgResponse);
379 380
     }
380 381
 
381 382
     /**
@@ -420,20 +421,14 @@ public class Model implements PropertyChangeListener{
420 421
      * Sends a deconnection Messages (type 7) in broadcast
421 422
      */
422 423
     public void sendDeconnectionMessage() {
423
-        try {
424
-            MessagePseudo msg = new MessagePseudo(7, this.user.getInetAddress(), InetAddress.getLocalHost(), 0, this.user.getPseudo(),this.user.getId());
425
-            UDPOut.sendMsg(msg);
426
-        }
427
-        catch (UnknownHostException e){
428
-            System.out.println(("exception Trouver host dans sendPseudoBroadcast"));
429
-            e.printStackTrace();
430
-        }
424
+        MessagePseudo msg = new MessagePseudo(7, this.user.getInetAddress(), this.user.getPseudo(), this.user.getTcpListeningPort(), this.user.getId());
425
+        UDPOut.sendBrdcst(msg);
431 426
         try {
432 427
             this.app.stop();
433 428
             Platform.exit();
434 429
             System.exit(0);
435 430
         } catch (Exception e) {
436
-            e.printStackTrace();
431
+            System.out.println("Erreur lors de l'envoi du message de deconnexion'");
437 432
         }
438 433
     }
439 434
 
@@ -446,7 +441,7 @@ public class Model implements PropertyChangeListener{
446 441
         try {
447 442
             link.close();
448 443
         } catch (IOException e) {
449
-            e.printStackTrace();
444
+            System.out.println("Erreur lors de la fermeture du Chat");
450 445
         }
451 446
     }
452 447
 

+ 8
- 3
src/main/java/app/insa/clav/Core/Utilisateurs.java View File

@@ -61,11 +61,16 @@ public class Utilisateurs implements Comparable{
61 61
     }
62 62
 
63 63
     @Override
64
-    public String toString(){
65
-        return this.id + "|" + this.pseudo + "|" + this.inetAddress.toString();
64
+    public String toString() {
65
+        return "Utilisateurs{" +
66
+                "pseudo='" + pseudo + '\'' +
67
+                ", inetAddress=" + inetAddress +
68
+                ", id=" + id +
69
+                ", login='" + login + '\'' +
70
+                ", tcpListeningPort=" + tcpListeningPort +
71
+                '}';
66 72
     }
67 73
 
68
-
69 74
     @Override
70 75
     public boolean equals(Object obj) {
71 76
         Utilisateurs aux = (Utilisateurs) obj;

+ 1
- 11
src/main/java/app/insa/clav/Messages/Message.java View File

@@ -32,8 +32,6 @@ public class Message implements Serializable {
32 32
      */
33 33
     public int typeMessage;
34 34
     public InetAddress srcIP;
35
-    public InetAddress destIP; //Seulement pour UDP ou ouverture CO TCP
36
-    public int destPort; //Seulement pour UDP ou l'ouverture connexion TCP, sinon à 0.
37 35
 
38 36
     /**
39 37
      * Constructeur d'un message depuis un autre
@@ -42,8 +40,6 @@ public class Message implements Serializable {
42 40
     public Message(Message msg){
43 41
         this.typeMessage = msg.typeMessage;
44 42
         this.srcIP = msg.srcIP;
45
-        this.destIP = msg.destIP;
46
-        this.destPort = msg.destPort;
47 43
     }
48 44
 
49 45
     /**
@@ -54,15 +50,9 @@ public class Message implements Serializable {
54 50
      *
55 51
      * @param srcIP
56 52
      *              IP depuis laquelle le msg à été envoyé
57
-     * @param destIP
58
-     *              Ip de la machine destinataire
59
-     * @param destPort
60
-     *              Port de la machine destinataire
61 53
      */
62
-    public Message(int typeMessage,InetAddress srcIP,InetAddress destIP,int destPort){
54
+    public Message(int typeMessage,InetAddress srcIP){
63 55
         this.typeMessage = typeMessage;
64 56
         this.srcIP = srcIP;
65
-        this.destIP = destIP;
66
-        this.destPort = destPort;
67 57
     }
68 58
 }

+ 1
- 1
src/main/java/app/insa/clav/Messages/MessageChatTxt.java View File

@@ -20,7 +20,7 @@ public class MessageChatTxt extends Message{
20 20
     }
21 21
 
22 22
     public MessageChatTxt(int typeMessage, InetAddress srcIP, InetAddress destIP, int destPort, String payload, String date) {
23
-        super(typeMessage, srcIP, destIP, destPort);
23
+        super(typeMessage, srcIP);
24 24
         this.payload = payload;
25 25
         this.date = date;
26 26
     }

+ 1
- 1
src/main/java/app/insa/clav/Messages/MessageInit.java View File

@@ -11,7 +11,7 @@ public class MessageInit extends Message{
11 11
 
12 12
 
13 13
     public MessageInit(int typeMessage, InetAddress srcIP, InetAddress destIP, int destPort, int localId) {
14
-        super(typeMessage, srcIP, destIP, destPort);
14
+        super(typeMessage, srcIP);
15 15
         this.id = localId;
16 16
     }
17 17
 }

+ 18
- 16
src/main/java/app/insa/clav/Messages/MessagePseudo.java View File

@@ -18,35 +18,37 @@ public class MessagePseudo extends Message {
18 18
      * id de l'utilidateur source du message
19 19
      */
20 20
     public int id;
21
+    /**
22
+     * nport d'ecoute TCP
23
+     */
24
+    public int portEcouteTCP;
25
+
21 26
 
22 27
     /**
23 28
      * Créé un message à partir des info.
24 29
      * @see Message
25 30
      * @param typeMessage
26 31
      * @param srcIP
27
-     * @param destIP
28
-     * @param destPort
29 32
      * @param pseudo
33
+     * @param portEcouteTCP
30 34
      * @param id
31 35
      */
32
-    public MessagePseudo(int typeMessage, InetAddress srcIP, InetAddress destIP, int destPort, String pseudo, int id) {
33
-        super(typeMessage, srcIP, destIP, destPort);
36
+    public MessagePseudo(int typeMessage, InetAddress srcIP, String pseudo, int portEcouteTCP, int id) {
37
+        super(typeMessage, srcIP);
34 38
         this.pseudo = pseudo;
39
+        this.portEcouteTCP = portEcouteTCP;
35 40
         this.id = id;
36 41
     }
37 42
 
38
-    /**
39
-     * Crée un message à partir d'un message de base
40
-     * @see Message
41
-     * @param msg
42
-     * @param id
43
-     * @param pseudo
44
-     */
45
-    //Create Messages.MessagePseudo from Messages.Message
46
-    public MessagePseudo(Message msg, int id, String pseudo){
47
-        super(msg);
48
-        this.pseudo = pseudo;
49
-        this.id = id;
43
+    @Override
44
+    public String toString() {
45
+        return "MessagePseudo{" +
46
+                "typeMessage=" + typeMessage +
47
+                ", srcIP=" + srcIP +
48
+                ", pseudo='" + pseudo + '\'' +
49
+                ", id=" + id +
50
+                ", portEcouteTCP=" + portEcouteTCP +
51
+                "} " + super.toString();
50 52
     }
51 53
 
52 54
     /**

+ 4
- 3
src/main/java/app/insa/clav/Reseau/TCPChatConnection.java View File

@@ -6,6 +6,7 @@ import javafx.application.Platform;
6 6
 import java.beans.PropertyChangeListener;
7 7
 import java.beans.PropertyChangeSupport;
8 8
 import java.io.*;
9
+import java.net.InetAddress;
9 10
 import java.net.Socket;
10 11
 import java.util.ArrayList;
11 12
 import org.apache.commons.io.FilenameUtils;
@@ -63,9 +64,9 @@ public class TCPChatConnection extends Thread{
63 64
      *                  Message d'authentification que l'on enverra après l'etablissement de connexion
64 65
      *                  Message de type 7 classe MessageInit
65 66
      */
66
-    public TCPChatConnection(MessageInit msgInit, int remoteUserId){
67
+    public TCPChatConnection(MessageInit msgInit, InetAddress destIP, int portEcouteTCP, int remoteUserId){
67 68
         try {
68
-            this.link = new Socket(msgInit.destIP,msgInit.destPort);
69
+            this.link = new Socket(destIP, portEcouteTCP);
69 70
             OutputStream os = this.link.getOutputStream();
70 71
             InputStream is = this.link.getInputStream();
71 72
             this.objectOutStream = new ObjectOutputStream(os);
@@ -202,7 +203,7 @@ public class TCPChatConnection extends Thread{
202 203
      * When receiving a type 8 message, closed the chat connection
203 204
      */
204 205
     public void sendCloseChat() {
205
-        Message msg = new Message(8,this.link.getLocalAddress(),this.link.getInetAddress(),this.link.getPort());
206
+        Message msg = new Message(8, this.link.getLocalAddress());
206 207
         try {
207 208
             this.objectOutStream.writeObject(msg);
208 209
         } catch (IOException e) {

+ 3
- 0
src/main/java/app/insa/clav/Reseau/TCPListener.java View File

@@ -53,6 +53,9 @@ public class TCPListener extends Thread{
53 53
         this.support.addPropertyChangeListener("chatCreated",pcl);
54 54
     }
55 55
 
56
+    public int getPort() {
57
+        return port;
58
+    }
56 59
 
57 60
     public TCPChatConnection getTCPChatConnection(){return this.bufferTCPConnection.remove(0);}
58 61
 

+ 17
- 6
src/main/java/app/insa/clav/Reseau/UDPInput.java View File

@@ -48,8 +48,9 @@ public class UDPInput extends Thread{
48 48
     public UDPInput(InetAddress localAddress, int listeningPort){
49 49
         try {
50 50
             this.socket = new DatagramSocket(listeningPort,localAddress);
51
+            //System.out.println("\n\nADRESSE DU SOCKET : " + localAddress.toString());
51 52
             this.filter = new boolean[8];
52
-            this.filter[1] = false;
53
+            this.filter[1] = true;
53 54
             this.filter[2] = false;
54 55
             this.filter[3] = false;
55 56
             this.filter[4] = true;
@@ -59,8 +60,7 @@ public class UDPInput extends Thread{
59 60
             this.support = new PropertyChangeSupport(this);
60 61
         }
61 62
         catch (SocketException e){
62
-            System.out.println("Exception creation SocketDatagrammeConfiguration");
63
-            e.printStackTrace();
63
+            System.out.println("Exception creation Socket UDP input");
64 64
         }
65 65
     }
66 66
 
@@ -94,6 +94,13 @@ public class UDPInput extends Thread{
94 94
         this.filter[index] = value;
95 95
     }
96 96
 
97
+    public void printFilter() {
98
+        int i;
99
+        for (i=0;i<8;i++) {
100
+            System.out.println("Filtre de type " + i + " : " + this.filter[i]);
101
+        }
102
+    }
103
+
97 104
     /**
98 105
      * Ecoute en permanance le socket UDP et si un message reçu passe le filtre, on notifie les observateurs
99 106
      */
@@ -104,11 +111,13 @@ public class UDPInput extends Thread{
104 111
             DatagramPacket inputPacket = new DatagramPacket(buffer,buffer.length);
105 112
             try
106 113
             {
114
+                //System.out.println("En attente de reception d'un message");
107 115
                 this.socket.receive(inputPacket);
116
+                //System.out.println("Message reçu");
108 117
             }
109 118
             catch (IOException e){
110 119
                 System.out.println("IOException reception paquet UDP");
111
-                e.printStackTrace();
120
+                //e.printStackTrace();
112 121
             }
113 122
             ByteArrayInputStream byteInStream = new ByteArrayInputStream(inputPacket.getData());
114 123
             try {
@@ -117,15 +126,17 @@ public class UDPInput extends Thread{
117 126
                 if (this.filter[msg.typeMessage]){
118 127
                     this.msgReceivedBuffer.add(msg);
119 128
                     this.support.firePropertyChange("UDPInput",this.msgReceivedBuffer.size() -1, this.msgReceivedBuffer.size());
129
+                } else {
130
+                    System.out.println("Message filtré : " + msg.toString());
120 131
                 }
121 132
             }
122 133
             catch (IOException e){
123 134
                 System.out.println("IOException déserialization paquet UDP");
124
-                e.printStackTrace();
135
+                //e.printStackTrace();
125 136
             }
126 137
             catch (ClassNotFoundException e){
127 138
                 System.out.println("IOException déserialization paquet UDP");
128
-                e.printStackTrace();
139
+                //e.printStackTrace();
129 140
             }
130 141
         }
131 142
     }

+ 39
- 10
src/main/java/app/insa/clav/Reseau/UDPOutput.java View File

@@ -39,17 +39,16 @@ public class UDPOutput{
39 39
             this.addrBroadcast = addrBroadcast;
40 40
         }
41 41
         catch (SocketException e){
42
-            System.out.println("Exception creation SocketDatagrammeConfiguration");
43
-            e.printStackTrace();
42
+            System.out.println("Exception creation Socket UDP output");
44 43
         }
45 44
     }
46 45
 
47 46
     /**
48
-     * Envoie le message en paramètre
47
+     * Envoie le message en paramètre en Broadcast
49 48
      * @param msg
50 49
      *          Message à envoyer
51 50
      */
52
-    public void sendMsg(Message msg){
51
+    public void sendBrdcst(Message msg){
53 52
         try {
54 53
             //Envoi du pseudo sur le reseau local à l'adresse IP dest sur le port dest
55 54
             byte[] buffer = "".getBytes();
@@ -62,19 +61,49 @@ public class UDPOutput{
62 61
             } catch (IOException e1) {
63 62
                 System.out.println("Exception serialisation de l'objet envoi message");
64 63
             }
65
-            //InetAddress broadcastAdress = InetAddress.getByAddress("255.255.255.255".getBytes());
66 64
             DatagramPacket packet = new DatagramPacket(buffer,buffer.length,this.addrBroadcast,this.portListening);
67
-            System.out.println(packet.toString());
68
-            System.out.println(this.addrBroadcast.toString());
65
+            //System.out.println(packet.toString());
66
+            //System.out.println(this.addrBroadcast.toString());
69 67
             this.socket.send(packet);
70 68
         }
71 69
         catch (UnknownHostException e){
72 70
             System.out.println("Unknown host dans broadcast address");
73
-            e.printStackTrace();
74 71
         }
75 72
         catch (IOException e){
76
-            System.out.println("IOException send pseudo");
77
-            e.printStackTrace();
73
+            System.out.println("IOException sendbrcst");
74
+        }
75
+    }
76
+
77
+    /**
78
+     * Envoie le message en paramètre
79
+     * @param msg
80
+     *          Message à envoyer
81
+     * @param destIP
82
+     *          IP du destinataire
83
+     */
84
+    public void sendMsg(Message msg, InetAddress destIP){
85
+        try {
86
+            //Envoi du pseudo sur le reseau local à l'adresse IP dest sur le port dest
87
+            byte[] buffer = "".getBytes();
88
+            ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
89
+            try {
90
+                ObjectOutputStream objectOutStream = new ObjectOutputStream(byteOutStream);
91
+                objectOutStream.writeObject(msg);
92
+                objectOutStream.close();
93
+                buffer = byteOutStream.toByteArray();
94
+            } catch (IOException e1) {
95
+                System.out.println("Exception serialisation de l'objet envoi message");
96
+            }
97
+            DatagramPacket packet = new DatagramPacket(buffer,buffer.length, destIP, this.portListening);
98
+            //System.out.println(packet.toString());
99
+            //System.out.println(this.addrBroadcast.toString());
100
+            this.socket.send(packet);
101
+        }
102
+        catch (UnknownHostException e){
103
+            System.out.println("Unknown host dans sendmsg");
104
+        }
105
+        catch (IOException e){
106
+            System.out.println("IOException sendmsg");
78 107
         }
79 108
     }
80 109
 }

+ 5
- 5
src/main/java/app/insa/clav/UIControllers/ConnectionScreenController.java View File

@@ -144,7 +144,7 @@ public class ConnectionScreenController implements Initializable, PropertyChange
144 144
     @FXML
145 145
     void submitConnection(ActionEvent event) {
146 146
         String login = this.loginInputIn.getText();
147
-        System.out.println(this.dbAccess == null);
147
+        //System.out.println(this.dbAccess == null);
148 148
         if (!login.equals("") && !this.isSubmittingIn && !this.isSubmittingUp) {
149 149
             this.isSubmittingIn = true;
150 150
             this.spinnerIn.setVisible(true);
@@ -166,13 +166,12 @@ public class ConnectionScreenController implements Initializable, PropertyChange
166 166
     void submitSignUp(ActionEvent event) {
167 167
         this.loginUp = this.loginInputUp.getText();
168 168
         this.pseudoUp = this.pseudoInputUp.getText();
169
-        System.out.println("login = " + loginUp + " and pseudo = " + pseudoUp);
170 169
         if (!this.loginUp.equals("") && !this.pseudoUp.equals("") && !this.isSubmittingIn && !this.isSubmittingUp){
171 170
             this.isSubmittingUp = true;
172 171
             this.spinnerUp.setVisible(true);
173
-            boolean isLoginOk = this.dbAccess.isLoginUsed(this.loginUp);
174
-            if (isLoginOk){
175
-                this.model.choosePseudo(this.pseudoUp,false);
172
+            boolean loginExist = this.dbAccess.isLoginUsed(this.loginUp);
173
+            if (!loginExist){
174
+                this.model.choosePseudo(this.pseudoUp,true);
176 175
             }
177 176
             else{
178 177
                 this.labelErrorUpLogin.setVisible(true);
@@ -186,6 +185,7 @@ public class ConnectionScreenController implements Initializable, PropertyChange
186 185
      * Called when signing up and pseudo valid, used to update DB ad send pseudo Confirmation
187 186
      */
188 187
     private void pseudoValideUp(){
188
+        System.out.println("Log et pseudo " + this.loginUp + this.pseudoUp);
189 189
         this.model.setUserId(this.dbAccess.addUtilisateur(this.loginUp,this.pseudoUp));
190 190
         this.model.sendPseudoValideBroadcast();
191 191
     }

Loading…
Cancel
Save