Version OK serveur prend en compte crash et présence

This commit is contained in:
Faure Paul 2021-02-11 18:45:52 +01:00
parent 67437407a8
commit 6470451686
38 changed files with 106 additions and 405 deletions

View file

@ -23,6 +23,7 @@ dependencies {
testImplementation("org.junit.jupiter:junit-jupiter-api:${junitVersion}") testImplementation("org.junit.jupiter:junit-jupiter-api:${junitVersion}")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${junitVersion}") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")
//implementation files('build/libs/Clavardage-1.0.jar')
} }
test { test {

Binary file not shown.

Binary file not shown.

View file

@ -1,30 +1,20 @@
com/example/ServeurClavardage/Messages/MessageInit.java app/insa/clav/Messages/MessagePseudo.java
com.example.ServeurClavardage.Messages.MessageInit app.insa.clav.Messages.MessagePseudo
com/example/ServeurClavardage/Messages/MessageDisplayFile.java app/insa/clav/Messages/Message.java
com.example.ServeurClavardage.Messages.MessageDisplayFile app.insa.clav.Messages.Message
com/example/ServeurClavardage/Messages/MessageDisplay.java
com.example.ServeurClavardage.Messages.MessageDisplay
com/example/ServeurClavardage/Messages/MessagePseudo.java
com.example.ServeurClavardage.Messages.MessagePseudo
com/example/ServeurClavardage/Messages/MessageChatFile.java
com.example.ServeurClavardage.Messages.MessageChatFile
com/example/ServeurClavardage/Utilisateurs.java
com.example.ServeurClavardage.Utilisateurs
com/example/ServeurClavardage/Messages/Message.java
com.example.ServeurClavardage.Messages.Message
com/example/ServeurClavardage/GetOutdoorUsers.java
com.example.ServeurClavardage.GetOutdoorUsers
com/example/ServeurClavardage/SharedInformation.java
com.example.ServeurClavardage.SharedInformation
com/example/ServeurClavardage/Messages/MessageChatTxt.java
com.example.ServeurClavardage.Messages.MessageChatTxt
com/example/ServeurClavardage/GetAllUsers.java com/example/ServeurClavardage/GetAllUsers.java
com.example.ServeurClavardage.GetAllUsers com.example.ServeurClavardage.GetAllUsers
com/example/ServeurClavardage/SubmitConnectionOutdoor.java com/example/ServeurClavardage/GetOutdoorUsers.java
com.example.ServeurClavardage.SubmitConnectionOutdoor com.example.ServeurClavardage.GetOutdoorUsers
com/example/ServeurClavardage/SubmitConnectionIndoor.java
com.example.ServeurClavardage.SubmitConnectionIndoor
com/example/ServeurClavardage/SubmitDeconnectionIndoor.java com/example/ServeurClavardage/SubmitDeconnectionIndoor.java
com.example.ServeurClavardage.SubmitDeconnectionIndoor com.example.ServeurClavardage.SubmitDeconnectionIndoor
com/example/ServeurClavardage/SubmitConnectionOutdoor.java
com.example.ServeurClavardage.SubmitConnectionOutdoor
com/example/ServeurClavardage/SubmitDeconnectionOutdoor.java com/example/ServeurClavardage/SubmitDeconnectionOutdoor.java
com.example.ServeurClavardage.SubmitDeconnectionOutdoor com.example.ServeurClavardage.SubmitDeconnectionOutdoor
com/example/ServeurClavardage/SharedInformation.java
com.example.ServeurClavardage.SharedInformation
com/example/ServeurClavardage/SubmitConnectionIndoor.java
com.example.ServeurClavardage.SubmitConnectionIndoor
app/insa/clav/Core/Utilisateurs.java
app.insa.clav.Core.Utilisateurs

View file

@ -1,7 +1,6 @@
package com.example.ServeurClavardage; package app.insa.clav.Core;
import java.io.Serializable; import java.net.*;
import java.net.InetAddress;
import java.util.Date; import java.util.Date;
@ -11,26 +10,20 @@ public class Utilisateurs implements Comparable{
private String pseudo; private String pseudo;
private InetAddress inetAddress; private InetAddress inetAddress;
private int id; private int id;
private int port;
private String login; private String login;
private boolean isOutdoor; private boolean isOutdoor;
private Date lastUpdate;
private int tcpListeningPort;
public Date getLatestUpdate() {
return latestUpdate;
}
public void setLatestUpdate(Date latestUpdate) { public Utilisateurs(String pseudo, InetAddress inetAddress, int id, int tcpListeningPort) {
this.latestUpdate = latestUpdate;
}
private Date latestUpdate;
public Utilisateurs(String pseudo, InetAddress inetAddress, int id, int port, boolean isOutdoor) {
this.pseudo = pseudo; this.pseudo = pseudo;
this.inetAddress = inetAddress; this.inetAddress = inetAddress;
this.id = id; this.id = id;
this.port = port; this.tcpListeningPort = tcpListeningPort;
this.isOutdoor = isOutdoor; this.isOutdoor = true;
this.lastUpdate = new Date();
System.out.println("Date du jour " + this.lastUpdate.toString());
} }
public void setPseudo(String pseudo) { public void setPseudo(String pseudo) {
@ -45,8 +38,8 @@ public class Utilisateurs implements Comparable{
this.id = id; this.id = id;
} }
public void setPort(int port) { public void setTcpListeningPort(int tcpListeningPort) {
this.port = port; this.tcpListeningPort = tcpListeningPort;
} }
public String getPseudo() { public String getPseudo() {
@ -61,11 +54,10 @@ public class Utilisateurs implements Comparable{
return id; return id;
} }
public int getPort() { public String getLogin() {
return port; return login;
} }
public boolean isOutdoor() { public boolean isOutdoor() {
return isOutdoor; return isOutdoor;
} }
@ -74,13 +66,39 @@ public class Utilisateurs implements Comparable{
isOutdoor = outdoor; isOutdoor = outdoor;
} }
public void setLogin(String login) {
this.login = login;
}
public int getTcpListeningPort() {
return tcpListeningPort;
}
public void update() {
this.lastUpdate = new Date();
}
public boolean userToOld(Date date) {
System.out.println("Local Date : " + this.lastUpdate.toString());
System.out.println("Local time : " + this.lastUpdate.getTime());
System.out.println("Remote Date : " + date.toString());
System.out.println("Remote Time : " + date.getTime());
return (date.getTime() - this.lastUpdate.getTime() > 4000);
}
@Override @Override
public String toString() { public String toString() {
return Integer.toString(this.id) + "|" + this.pseudo + "|" + this.inetAddress.toString() + "|" + Integer.toString(this.port); return "Utilisateurs{" +
"pseudo='" + pseudo + '\'' +
", inetAddress=" + inetAddress +
", id=" + id +
", login='" + login + '\'' +
", isOutdoor=" + isOutdoor +
", lastUpdate=" + lastUpdate +
", tcpListeningPort=" + tcpListeningPort +
'}';
} }
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
Utilisateurs aux = (Utilisateurs) obj; Utilisateurs aux = (Utilisateurs) obj;
@ -92,12 +110,4 @@ public class Utilisateurs implements Comparable{
Utilisateurs u = (Utilisateurs) o; Utilisateurs u = (Utilisateurs) o;
return this.pseudo.compareTo(u.pseudo); return this.pseudo.compareTo(u.pseudo);
} }
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
} }

View file

@ -1,4 +1,4 @@
package com.example.ServeurClavardage.Messages; package app.insa.clav.Messages;
import java.io.Serializable; import java.io.Serializable;
import java.net.InetAddress; import java.net.InetAddress;
@ -32,9 +32,6 @@ public class Message implements Serializable {
*/ */
public int typeMessage; public int typeMessage;
public InetAddress srcIP; public InetAddress srcIP;
public int srcResponsePort; //Seulement besoin car on teste en localHost
public InetAddress destIP; //Seulement pour UDP ou ouverture CO TCP
public int destPort; //Seulement pour UDP ou l'ouverture connexion TCP, sinon à 0.
/** /**
* Constructeur d'un message depuis un autre * Constructeur d'un message depuis un autre
@ -43,9 +40,6 @@ public class Message implements Serializable {
public Message(Message msg){ public Message(Message msg){
this.typeMessage = msg.typeMessage; this.typeMessage = msg.typeMessage;
this.srcIP = msg.srcIP; this.srcIP = msg.srcIP;
this.srcResponsePort = msg.srcResponsePort;
this.destIP = msg.destIP;
this.destPort = msg.destPort;
} }
/** /**
@ -56,18 +50,9 @@ public class Message implements Serializable {
* *
* @param srcIP * @param srcIP
* IP depuis laquelle le msg à été envoyé * IP depuis laquelle le msg à été envoyé
* @param srcResponsePort
* Port à utiliser pour répondre à ce message
* @param destIP
* Ip de la machine destinataire
* @param destPort
* Port de la machine destinataire
*/ */
public Message(int typeMessage,InetAddress srcIP, int srcResponsePort,InetAddress destIP,int destPort){ public Message(int typeMessage,InetAddress srcIP){
this.typeMessage = typeMessage; this.typeMessage = typeMessage;
this.srcIP = srcIP; this.srcIP = srcIP;
this.srcResponsePort = srcResponsePort;
this.destIP = destIP;
this.destPort = destPort;
} }
} }

View file

@ -1,4 +1,4 @@
package com.example.ServeurClavardage.Messages; package app.insa.clav.Messages;
import java.net.InetAddress; import java.net.InetAddress;
@ -18,36 +18,37 @@ public class MessagePseudo extends Message {
* id de l'utilidateur source du message * id de l'utilidateur source du message
*/ */
public int id; public int id;
/**
* nport d'ecoute TCP
*/
public int portEcouteTCP;
/** /**
* Créé un message à partir des info. * Créé un message à partir des info.
* @see Message * @see Message
* @param typeMessage * @param typeMessage
* @param srcIP * @param srcIP
* @param srcPort
* @param destIP
* @param destPort
* @param pseudo * @param pseudo
* @param portEcouteTCP
* @param id * @param id
*/ */
public MessagePseudo(int typeMessage, InetAddress srcIP, int srcPort, InetAddress destIP, int destPort, String pseudo, int id) { public MessagePseudo(int typeMessage, InetAddress srcIP, String pseudo, int portEcouteTCP, int id) {
super(typeMessage, srcIP, srcPort, destIP, destPort); super(typeMessage, srcIP);
this.pseudo = pseudo; this.pseudo = pseudo;
this.portEcouteTCP = portEcouteTCP;
this.id = id; this.id = id;
} }
/** @Override
* Crée un message à partir d'un message de base public String toString() {
* @see Message return "MessagePseudo{" +
* @param msg "typeMessage=" + typeMessage +
* @param id ", srcIP=" + srcIP +
* @param pseudo ", pseudo='" + pseudo + '\'' +
*/ ", id=" + id +
//Create Messages.MessagePseudo from Messages.Message ", portEcouteTCP=" + portEcouteTCP +
public MessagePseudo(Message msg, int id, String pseudo){ "} " + super.toString();
super(msg);
this.pseudo = pseudo;
this.id = id;
} }
/** /**

View file

@ -1,15 +1,16 @@
package com.example.ServeurClavardage; package com.example.ServeurClavardage;
import java.io.*; import app.insa.clav.Core.Utilisateurs;
import java.net.InetAddress;
import java.util.ArrayList;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import com.example.ServeurClavardage.Messages.MessagePseudo;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
@WebServlet(name = "getAllUsers", value = "/getAllUsers") @WebServlet(name = "getAllUsers", value = "/getAllUsers")
public class GetAllUsers extends HttpServlet { public class GetAllUsers extends HttpServlet {

View file

@ -6,6 +6,7 @@ import java.util.ArrayList;
import javax.servlet.http.*; import javax.servlet.http.*;
import javax.servlet.annotation.*; import javax.servlet.annotation.*;
import app.insa.clav.Core.Utilisateurs;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;

View file

@ -1,21 +0,0 @@
package com.example.ServeurClavardage.Messages;
import java.net.InetAddress;
public class MessageChatFile extends MessageChatTxt{
public long fileSize;
public String ext;
public MessageChatFile(Message msg, String payload, String date, long fileSize, String ext) {
super(msg, payload, date);
this.fileSize = fileSize;
this.ext = ext;
}
public MessageChatFile(int typeMessage, InetAddress srcIP, int srcResponsePort, InetAddress destIP, int destPort, String payload, String date, long fileSize, String ext) {
super(typeMessage, srcIP, srcResponsePort, destIP, destPort, payload, date);
this.fileSize = fileSize;
this.ext = ext;
}
}

View file

@ -1,27 +0,0 @@
package com.example.ServeurClavardage.Messages;
import java.net.InetAddress;
/**
* Messages texte dans un chat
*/
//Message de type 6
public class MessageChatTxt extends Message{
public String payload;
public String date;
public MessageChatTxt(Message msg, String payload, String date) {
super(msg);
this.payload = payload;
this.date = date;
}
public MessageChatTxt(int typeMessage, InetAddress srcIP, int srcResponsePort, InetAddress destIP, int destPort, String payload, String date) {
super(typeMessage, srcIP, srcResponsePort, destIP, destPort);
this.payload = payload;
this.date = date;
}
}

View file

@ -1,61 +0,0 @@
package com.example.ServeurClavardage.Messages;
/**
* Element of the list that contains the history of messages returned by the DB
*/
public class MessageDisplay {
private int sourceId;
private String date;
private String payload;
/**
* Type 1 --> Normal text message
* Type 2 --> File message not image
* Type 3 --> Image file (png, jpg, gif, jpeg, svg)
*/
private int type;
public MessageDisplay(int sourceId, String date, String payload,int type) {
this.sourceId = sourceId;
this.date = date;
this.payload = payload;
this.type = type;
}
public MessageDisplay(){}
public int getSourceId() {
return sourceId;
}
public void setSourceId(int sourceId) {
this.sourceId = sourceId;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getPayload() {
return payload;
}
public void setPayload(String payload) {
this.payload = payload;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
}

View file

@ -1,48 +0,0 @@
package com.example.ServeurClavardage.Messages;
import java.io.File;
public class MessageDisplayFile extends MessageDisplay{
private File file;
private String ext;
private int DBId;
public MessageDisplayFile(int sourceId, String date, String payload, int type, File file, String ext, int DBid) {
super(sourceId, date, payload, type);
this.file = file;
this.ext = ext;
this.DBId = DBid;
}
public MessageDisplayFile() {
}
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public String getExt() {
return ext;
}
public void setExt(String ext) {
this.ext = ext;
}
public int getDBId() {
return DBId;
}
public void setDBId(int DBId) {
this.DBId = DBId;
}
}

View file

@ -1,17 +0,0 @@
package com.example.ServeurClavardage.Messages;
import java.net.InetAddress;
/**
* Messaged sent when a user creates a chat room to identifies itself
*/
public class MessageInit extends Message{
public int id;
public MessageInit(int typeMessage, InetAddress srcIP, int srcResponsePort, InetAddress destIP, int destPort, int localId) {
super(typeMessage, srcIP, srcResponsePort, destIP, destPort);
this.id = localId;
}
}

View file

@ -1,5 +1,7 @@
package com.example.ServeurClavardage; package com.example.ServeurClavardage;
import app.insa.clav.Core.Utilisateurs;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;

View file

@ -3,12 +3,11 @@ package com.example.ServeurClavardage;
import java.io.*; import java.io.*;
import java.net.*; import java.net.*;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import javax.servlet.http.*; import javax.servlet.http.*;
import javax.servlet.annotation.*; import javax.servlet.annotation.*;
import com.example.ServeurClavardage.Messages.Message; import app.insa.clav.Core.Utilisateurs;
import com.example.ServeurClavardage.Messages.MessagePseudo; import app.insa.clav.Messages.MessagePseudo;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
@ -36,35 +35,7 @@ public class SubmitConnectionIndoor extends HttpServlet {
System.out.println(resp.toString()); System.out.println(resp.toString());
} }
Utilisateurs newUser = gson.fromJson(resp.toString(), Utilisateurs.class); Utilisateurs newUser = gson.fromJson(resp.toString(), Utilisateurs.class);
System.out.println(newUser); newUser.update();
for (Utilisateurs user : this.sh.getOutdoorUsersList()){
DatagramSocket socket = new DatagramSocket();
MessagePseudo msg = new MessagePseudo(4, newUser.getInetAddress(), newUser.getPort(), user.getInetAddress(), user.getPort(), user.getPseudo(),user.getId());
try {
//Envoi du pseudo sur le reseau local à l'adresse IP dest sur le port dest
byte[] buffer = "".getBytes();
ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
try {
ObjectOutputStream objectOutStream = new ObjectOutputStream(byteOutStream);
objectOutStream.writeObject(msg);
objectOutStream.close();
buffer = byteOutStream.toByteArray();
} catch (IOException e1) {
System.out.println("Exception serialisation de l'objet envoi message");
}
//InetAddress broadcastAdress = InetAddress.getByAddress("255.255.255.255".getBytes());
DatagramPacket packet = new DatagramPacket(buffer,buffer.length,msg.destIP,msg.destPort);
socket.send(packet);
}
catch (UnknownHostException e){
System.out.println("Unknown host dans broadcast address");
e.printStackTrace();
}
catch (IOException e){
System.out.println("IOException send pseudo");
e.printStackTrace();
}
}
this.sh.addIndoorUser(newUser); this.sh.addIndoorUser(newUser);
} }

View file

@ -3,14 +3,14 @@ package com.example.ServeurClavardage;
import java.io.*; import java.io.*;
import java.net.DatagramPacket; import java.net.DatagramPacket;
import java.net.DatagramSocket; import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import javax.servlet.http.*; import javax.servlet.http.*;
import javax.servlet.annotation.*; import javax.servlet.annotation.*;
import com.example.ServeurClavardage.Messages.MessagePseudo; import app.insa.clav.Core.Utilisateurs;
import app.insa.clav.Messages.MessagePseudo;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
@ -38,37 +38,9 @@ public class SubmitConnectionOutdoor extends HttpServlet {
System.out.println(resp.toString()); System.out.println(resp.toString());
} }
Utilisateurs newUser = gson.fromJson(resp.toString(), Utilisateurs.class); Utilisateurs newUser = gson.fromJson(resp.toString(), Utilisateurs.class);
ArrayList<Utilisateurs> allUsers = new ArrayList<>(this.sh.getOutdoorUsersList()); newUser.update();
allUsers.addAll(this.sh.getIndoorUsersList());
for (Utilisateurs user : allUsers){
DatagramSocket socket = new DatagramSocket();
MessagePseudo msg = new MessagePseudo(4, newUser.getInetAddress(), newUser.getPort(), user.getInetAddress(), user.getPort(), user.getPseudo(),user.getId());
try {
//Envoi du pseudo sur le reseau local à l'adresse IP dest sur le port dest
byte[] buffer = "".getBytes();
ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
try {
ObjectOutputStream objectOutStream = new ObjectOutputStream(byteOutStream);
objectOutStream.writeObject(msg);
objectOutStream.close();
buffer = byteOutStream.toByteArray();
} catch (IOException e1) {
System.out.println("Exception serialisation de l'objet envoi message");
}
//InetAddress broadcastAdress = InetAddress.getByAddress("255.255.255.255".getBytes());
DatagramPacket packet = new DatagramPacket(buffer,buffer.length,msg.destIP,msg.destPort);
socket.send(packet);
}
catch (UnknownHostException e){
System.out.println("Unknown host dans broadcast address");
e.printStackTrace();
}
catch (IOException e){
System.out.println("IOException send pseudo");
e.printStackTrace();
}
}
this.sh.addOutdoorUser(newUser); this.sh.addOutdoorUser(newUser);
} }
public void destroy() { public void destroy() {

View file

@ -3,12 +3,11 @@ package com.example.ServeurClavardage;
import java.io.*; import java.io.*;
import java.net.*; import java.net.*;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import javax.servlet.http.*; import javax.servlet.http.*;
import javax.servlet.annotation.*; import javax.servlet.annotation.*;
import com.example.ServeurClavardage.Messages.Message; import app.insa.clav.Core.Utilisateurs;
import com.example.ServeurClavardage.Messages.MessagePseudo; import app.insa.clav.Messages.MessagePseudo;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
@ -38,34 +37,6 @@ public class SubmitDeconnectionIndoor extends HttpServlet {
Utilisateurs disconnectedUser = gson.fromJson(resp.toString(), Utilisateurs.class); Utilisateurs disconnectedUser = gson.fromJson(resp.toString(), Utilisateurs.class);
this.sh.removeIndoorUser(disconnectedUser); this.sh.removeIndoorUser(disconnectedUser);
System.out.println(disconnectedUser); System.out.println(disconnectedUser);
for (Utilisateurs user : this.sh.getOutdoorUsersList()){
DatagramSocket socket = new DatagramSocket();
MessagePseudo msg = new MessagePseudo(7, disconnectedUser.getInetAddress(), disconnectedUser.getPort(), user.getInetAddress(), user.getPort(), user.getPseudo(),user.getId());
try {
//Envoi du pseudo sur le reseau local à l'adresse IP dest sur le port dest
byte[] buffer = "".getBytes();
ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
try {
ObjectOutputStream objectOutStream = new ObjectOutputStream(byteOutStream);
objectOutStream.writeObject(msg);
objectOutStream.close();
buffer = byteOutStream.toByteArray();
} catch (IOException e1) {
System.out.println("Exception serialisation de l'objet envoi message");
}
//InetAddress broadcastAdress = InetAddress.getByAddress("255.255.255.255".getBytes());
DatagramPacket packet = new DatagramPacket(buffer,buffer.length,msg.destIP,msg.destPort);
socket.send(packet);
}
catch (UnknownHostException e){
System.out.println("Unknown host dans broadcast address");
e.printStackTrace();
}
catch (IOException e){
System.out.println("IOException send pseudo");
e.printStackTrace();
}
}
} }
public void destroy() { public void destroy() {

View file

@ -3,14 +3,14 @@ package com.example.ServeurClavardage;
import java.io.*; import java.io.*;
import java.net.DatagramPacket; import java.net.DatagramPacket;
import java.net.DatagramSocket; import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import javax.servlet.http.*; import javax.servlet.http.*;
import javax.servlet.annotation.*; import javax.servlet.annotation.*;
import com.example.ServeurClavardage.Messages.MessagePseudo; import app.insa.clav.Core.Utilisateurs;
import app.insa.clav.Messages.MessagePseudo;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
@ -38,37 +38,7 @@ public class SubmitDeconnectionOutdoor extends HttpServlet {
System.out.println(resp.toString()); System.out.println(resp.toString());
} }
Utilisateurs disconnectedUser = gson.fromJson(resp.toString(), Utilisateurs.class); Utilisateurs disconnectedUser = gson.fromJson(resp.toString(), Utilisateurs.class);
this.sh.addOutdoorUser(disconnectedUser); this.sh.removeOutdoorUser(disconnectedUser);
ArrayList<Utilisateurs> allUsers = new ArrayList<>(this.sh.getOutdoorUsersList());
allUsers.addAll(this.sh.getIndoorUsersList());
for (Utilisateurs user : allUsers){
DatagramSocket socket = new DatagramSocket();
MessagePseudo msg = new MessagePseudo(7, disconnectedUser.getInetAddress(), disconnectedUser.getPort(), user.getInetAddress(), user.getPort(), user.getPseudo(),user.getId());
try {
//Envoi du pseudo sur le reseau local à l'adresse IP dest sur le port dest
byte[] buffer = "".getBytes();
ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
try {
ObjectOutputStream objectOutStream = new ObjectOutputStream(byteOutStream);
objectOutStream.writeObject(msg);
objectOutStream.close();
buffer = byteOutStream.toByteArray();
} catch (IOException e1) {
System.out.println("Exception serialisation de l'objet envoi message");
}
//InetAddress broadcastAdress = InetAddress.getByAddress("255.255.255.255".getBytes());
DatagramPacket packet = new DatagramPacket(buffer,buffer.length,msg.destIP,msg.destPort);
socket.send(packet);
}
catch (UnknownHostException e){
System.out.println("Unknown host dans broadcast address");
e.printStackTrace();
}
catch (IOException e){
System.out.println("IOException send pseudo");
e.printStackTrace();
}
}
} }
public void destroy() { public void destroy() {