Correction erreur connexion (ChatApp.getInstance().isConnecte() dans envoiUnicast() )

This commit is contained in:
Nabzzz 2021-01-20 15:49:53 +01:00
parent 9fe8dd70d5
commit a6b25652b7
4 changed files with 124 additions and 21 deletions

View file

@ -13,14 +13,15 @@ chatapp/Protocol/RunnerEcouteTCP.java
chatapp/View/FenetreSession.java chatapp/View/FenetreSession.java
chatapp.View.FenetreSession chatapp.View.FenetreSession
chatapp.View.FenetreSession$1 chatapp.View.FenetreSession$1
chatapp/Protocol/HttpEchange.java chatapp/Controller/ChatApp.java
chatapp.Protocol.HttpEchange chatapp.Controller.ChatApp
chatapp/View/ChangementPseudo.java chatapp/View/ChangementPseudo.java
chatapp.View.ChangementPseudo chatapp.View.ChangementPseudo
chatapp/View/View_Menu.java chatapp/Protocol/RunnerEcouteUDP.java
chatapp.View.View_Menu chatapp.Protocol.RunnerEcouteUDP
chatapp/View/DemarrerSession.java chatapp/Protocol/UDPEchange.java
chatapp.View.DemarrerSession chatapp.Protocol.RunnerUDP
chatapp.Protocol.UDPEchange
chatapp/Main.java chatapp/Main.java
chatapp.Main chatapp.Main
chatapp/View/Clavardage.java chatapp/View/Clavardage.java
@ -32,10 +33,9 @@ chatapp/View/ConnexionScreen.java
chatapp.View.ConnexionScreen chatapp.View.ConnexionScreen
chatapp/View/View_Utilisateurs.java chatapp/View/View_Utilisateurs.java
chatapp.View.View_Utilisateurs chatapp.View.View_Utilisateurs
chatapp/Protocol/UDPEchange.java chatapp/View/View_Menu.java
chatapp.Protocol.RunnerUDP chatapp.View.View_Menu
chatapp.Protocol.UDPEchange chatapp/Protocol/HttpEchange.java
chatapp/Controller/ChatApp.java chatapp.Protocol.HttpEchange
chatapp.Controller.ChatApp chatapp/View/DemarrerSession.java
chatapp/Protocol/RunnerEcouteUDP.java chatapp.View.DemarrerSession
chatapp.Protocol.RunnerEcouteUDP

View file

@ -110,7 +110,24 @@ public class ChatApp implements PropertyChangeListener {
* @return False si modiferPseudo a echoue, True sinon * @return False si modiferPseudo a echoue, True sinon
*/ */
private boolean modifierPseudoExterne(String nouveau) { private boolean modifierPseudoExterne(String nouveau) {
return false; boolean reussi = false;
try {
if(externeEchange.sendPost("Pseudo " + nouveau)){
reussi = true ;
this.getMe().setPseudo(nouveau);
db.majPseudo(this.me.getId(),nouveau);
System.out.println("Changement pseudo accepte, nouvelle liste des utilisateurs actifs:");
this.getActifUsers().afficherListeUtilisateurs();
}
else{
System.out.println("Echec changement de pseudo");
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return reussi;
} }
/** /**
@ -183,7 +200,15 @@ public class ChatApp implements PropertyChangeListener {
*/ */
private boolean connexionExterne(String pseudo) throws IOException, InterruptedException{ private boolean connexionExterne(String pseudo) throws IOException, InterruptedException{
this.me.setPseudo(pseudo); this.me.setPseudo(pseudo);
return externeEchange.sendPost("Connexion"); if(externeEchange.sendPost("Connexion")){
this.connecte=true;
this.db.ajoutUtilisateurs(this.me.getId(),pseudo);
this.db.majUtilisateursActifs(true,this.me.getId());
return true;
}
else{
return false;
}
} }
@ -214,7 +239,7 @@ public class ChatApp implements PropertyChangeListener {
else else
{ {
System.out.println("Connexion echoue"); System.out.println("Connexion echoue");
UDPEchange.setConnecte(false); UDPEchange.setConnecte(true);
return false ; return false ;
} }
} }
@ -265,8 +290,31 @@ public class ChatApp implements PropertyChangeListener {
* Il va prevenir le serveur de presence de son depart.</p> * Il va prevenir le serveur de presence de son depart.</p>
* *
*/ */
private void deconnexionExterne() { private void deconnexionExterne() throws IOException{
// A IMPLEMENTER // A IMPLEMENTER
System.out.println("Deco lancee");
boolean deco = false;
try {
deco = externeEchange.sendPost("Deconnexion");
} catch (InterruptedException e) {
e.printStackTrace();
}
if(deco){
System.out.print("Deconnexion reussie");
}
else{
System.out.println("Deconnexion echouee");
}
db.majUtilisateursActifs(false,this.me.getId());
this.connecte=false;
try {
main.stop();
} catch (Exception e) {
e.printStackTrace();
}
Platform.exit();
System.exit(0);
} }

View file

@ -37,6 +37,7 @@ public class HttpEchange {
*/ */
public boolean sendPost(String type) throws IOException, InterruptedException{ public boolean sendPost(String type) throws IOException, InterruptedException{
boolean reussi = false ; boolean reussi = false ;
/*---------------------------------CONNEXION---------------------------------*/
if (type.equals("Connexion")){ if (type.equals("Connexion")){
System.out.println("Tentative de connexion distante"); System.out.println("Tentative de connexion distante");
HttpClient client = HttpClient.newHttpClient(); HttpClient client = HttpClient.newHttpClient();
@ -63,6 +64,60 @@ public class HttpEchange {
} }
} }
} }
/*---------------------------------DECONNEXION---------------------------------*/
else if(type.equals("Deconnexion")){
System.out.println("Tentative de deconnexion distante");
HttpClient client = HttpClient.newHttpClient();
String requestBody = "Deconnexion\n" + this.chatapp.getMe().toString() ;
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
if(response.body().equals("")){
System.out.println("Reponse recue vide");
}
else {
System.out.println(response.body());
if(response.body().contains("Deconnexion")){
reussi = true;
System.out.println("Deconnexion acceptee");
}
}
}
/*---------------------------------PSEUDO---------------------------------*/
/*---------------------------Le nouveau pseudo----------------------------*/
else if(type.contains("Pseudo")){
String nouveau = type.split(" ")[1];
System.out.println("Tentative de modification de pseudo d'un hote distant");
HttpClient client = HttpClient.newHttpClient();
String requestBody = "Pseudo\n" + this.chatapp.getMe().toString() + "\n" + nouveau;
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
if(response.body().equals("")){
System.out.println("Reponse recue vide");
}
else {
System.out.println(response.body());
switch (response.body().split("\n")[0]) {
case "Reponse Pseudo":
reussi = Boolean.parseBoolean(response.body().split("\n")[1]);
System.out.println("Connexion acceptee");
break;
default:
System.out.println("Erreur dans le format de la réponse reçue");
}
}
}
else{ else{
System.out.println("Erreur de type"); System.out.println("Erreur de type");
} }

View file

@ -24,7 +24,7 @@ import chatapp.Model.*;
*/ */
public class UDPEchange { public class UDPEchange {
private static Boolean Connecte = false; private static Boolean Connecte = true;
// True si l'utilisateur peut se connecter avec ce nom d'utilisateur , False sinon // True si l'utilisateur peut se connecter avec ce nom d'utilisateur , False sinon
private static Boolean EcouteEnCours = false; private static Boolean EcouteEnCours = false;
@ -160,7 +160,7 @@ public class UDPEchange {
* @param Message correspond au message à transmettre a l'utilisateur * @param Message correspond au message à transmettre a l'utilisateur
*/ */
public static void envoiUnicast( InetAddress Adress , String Message ) throws IOException { public static void envoiUnicast( InetAddress Adress , String Message ) throws IOException {
if (UDPEchange.getConnecte()){ if (ChatApp.getInstance().isConnecte()){
DatagramSocket socket = new DatagramSocket(); DatagramSocket socket = new DatagramSocket();
byte[]buffer = Message.getBytes(); byte[]buffer = Message.getBytes();
DatagramPacket packet = new DatagramPacket( buffer, buffer.length, Adress, 1234 ); DatagramPacket packet = new DatagramPacket( buffer, buffer.length, Adress, 1234 );
@ -279,7 +279,7 @@ class RunnerUDP implements Runnable {
Utilisateur u = Utilisateur.stringToUtilisateur(received.split("\n")[2]); Utilisateur u = Utilisateur.stringToUtilisateur(received.split("\n")[2]);
app.getActifUsers().addList(u); app.getActifUsers().addList(u);
app.getActifUsers().afficherListeUtilisateurs(); app.getActifUsers().afficherListeUtilisateurs();
UDPEchange.setConnecte(true);
} }
else { else {
System.out.println("Pseudo deja pris"); System.out.println("Pseudo deja pris");