Suite connexion() 3

This commit is contained in:
Auriane Lartigue 2020-11-26 10:47:25 +01:00
parent 00cedc86d8
commit 1d04a9000d
6 changed files with 89 additions and 37 deletions

Binary file not shown.

View file

@ -1,11 +1,9 @@
import java.io.IOException; import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ChatApp { public class ChatApp {
@ -28,20 +26,24 @@ public class ChatApp {
this.me = new Utilisateur(pseudo,port,ip); this.me = new Utilisateur(pseudo,port,ip);
this.actifUsers.add(me); this.actifUsers.add(me);
} }
public void addList(Utilisateur u) {
this.actifUsers.add(u);
}
public void afficherListeUtilisateurs() {
System.out.println ("Liste des utilisateurs actifs : ");
for(Utilisateur elem: this.actifUsers)
{
System.out.println (elem.toString());
}
}
public void connexion() throws IOException { public void connexion() throws IOException {
// Envoie en broadcast à tous les utilsateurs
DatagramSocket socket = new DatagramSocket();
socket.setBroadcast(true);
// @ de broadcast du réseau de l'utilisateur me // @ de broadcast du réseau de l'utilisateur me
InetAddress broadcastAdress = this.me.getIp(); // 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 = this.me.toString() ; String broadcastMessage = this.me.toString() ;
byte[]buffer = broadcastMessage.getBytes(); Integer port = 1234 ;
DatagramPacket packet = new DatagramPacket( buffer, buffer.length, InetAddress.getLoopbackAddress(), 1234 ); UDPEchange.connexion(broadcastAdress,broadcastMessage, port);
socket.send(packet);
socket.close();
System.out.println(this.me.getPseudo() + " envoie : " + broadcastMessage);
} }
@ -54,29 +56,19 @@ public class ChatApp {
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
DatagramSocket socket = null; ExecutorService exec = Executors.newFixedThreadPool(1000);
try { exec.submit(new Runner(app));
socket = new DatagramSocket(1234);
} catch (SocketException e1) {
e1.printStackTrace();
}
byte buffer[] = new byte[1024];
while(true)
{
DatagramPacket data = new DatagramPacket(buffer,buffer.length);
try {
socket.receive(data);
} catch (IOException e) {
e.printStackTrace();
}
String received = new String(data.getData(), 0, data.getLength());
System.out.println(app.me.getPseudo() + " reçoit : " + received);
app.actifUsers.add(Utilisateur.stringToUtilisateur(received));
for(Utilisateur elem: app.actifUsers)
{
System.out.println (elem.toString());
} }
} }
} }
class Runner implements Runnable {
ChatApp app ;
public Runner(ChatApp app) {
this.app = app ;
}
@Override
public void run() {
UDPEchange.ecouteUDP(app);
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,60 @@
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class UDPEchange {
public static void connexion( InetAddress broadcastAdress , String broadcastMessage , Integer port) throws IOException {
// Envoie en broadcast à tous les utilsateurs
DatagramSocket socket = new DatagramSocket();
socket.setBroadcast(true);
byte[]buffer = broadcastMessage.getBytes();
DatagramPacket packet = new DatagramPacket( buffer, buffer.length, InetAddress.getLoopbackAddress(), port );
socket.send(packet);
socket.close();
System.out.println(broadcastMessage);
}
public static void ecouteUDP(ChatApp app)
{
DatagramSocket socket = null;
ExecutorService exec = Executors.newFixedThreadPool(1000);
try {
socket = new DatagramSocket(1234);
} catch (SocketException e1) {
e1.printStackTrace();
}
byte buffer[] = new byte[1024];
while(true)
{
DatagramPacket data = new DatagramPacket(buffer,buffer.length);
try {
socket.receive(data);
} catch (IOException e) {
e.printStackTrace();
}
exec.submit(new RunnerUDP(data,app));
}
}
}
class RunnerUDP implements Runnable {
final DatagramPacket data ;
ChatApp app ;
public RunnerUDP(DatagramPacket data, ChatApp app) {
this.data= data;
this.app = app ;
}
@Override
public void run() {
System.out.println("Thread started");
String received = new String(data.getData(), 0, data.getLength());
System.out.println(received);
app.addList(Utilisateur.stringToUtilisateur(received));
app.afficherListeUtilisateurs();
}
}