UDP : client <-> server

This commit is contained in:
basti 2020-11-26 13:39:42 +01:00
parent 089b5457cd
commit 53e7aae64d
4 changed files with 66 additions and 54 deletions

View file

@ -31,13 +31,21 @@ public class GestionnaireListeUtilisateur {
//ecoute le port de broadcast pour recevoir le message personnalisé
public String ecoute() {
int portEcoute = 2000;
UdpUnicastServer server = new UdpUnicastServer(portEcoute);
return "";
}
//envoie en Broadcast aux autres liste les infos sur cet utilisateur
public void envoie() {
}
//met à jour la Liste d'utilisateur
public void MAJListeUtilisateur() {

View file

@ -6,12 +6,14 @@ import java.util.concurrent.Executors;
public class MainUDP {
public static void main(String[] args) {
int port = 7001;
UdpUnicastServer server = new UdpUnicastServer(port, "LocalHost");
UdpUnicastClient client = new UdpUnicastClient(port);
int portServer = 7001;
int portClient = 7000;
UdpUnicastServer server = new UdpUnicastServer(portServer);
UdpUnicastClient client = new UdpUnicastClient(portClient, portServer, "LocalHost");
ExecutorService executorService = Executors.newFixedThreadPool(2);
executorService.submit(client);
executorService.submit(server);
executorService.submit(client);
}
}

View file

@ -1,38 +1,49 @@
package nom;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
import java.net.UnknownHostException;
public class UdpUnicastClient implements Runnable{
private final int port;
private final int clientPort;
private final int serverPort;
private final String serverIP;
public UdpUnicastClient(int port) {
this.port = port;
public UdpUnicastClient(int clientPort, int serverPort, String serverIP) {
this.clientPort = clientPort;
this.serverPort = serverPort;
this.serverIP = serverIP;
}
public void run() {
try(DatagramSocket clientSocket = new DatagramSocket(port)){
byte[] buffer = new byte[65507];
//clientSocket.setSoTimeout(3000);
while (true) {
DatagramPacket datagramPacket = new DatagramPacket(buffer, 0, buffer.length);
clientSocket.receive(datagramPacket);
String receivedMessage = new String(datagramPacket.getData());
System.out.println(receivedMessage);
try(DatagramSocket serverSocket = new DatagramSocket(clientPort)){
for (int i = 0; i<3; i++) {
String message = "Message number " + i;
DatagramPacket datagramPacket = new DatagramPacket(
message.getBytes(),
message.length(),
InetAddress.getByName(serverIP),
serverPort
);
serverSocket.send(datagramPacket);
}
} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
System.out.println("Timedout. CLient is closing.");
e.printStackTrace();
}
}
}

View file

@ -1,47 +1,38 @@
package nom;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.UnknownHostException;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UdpUnicastServer implements Runnable{
private final int clientPort;
private final String clientIP;
private final int serverPort;
public UdpUnicastServer(int clientPort, String clientIP) {
this.clientPort = clientPort;
this.clientIP = clientIP;
public UdpUnicastServer(int serverPort) {
this.serverPort = serverPort;
}
public void run() {
try(DatagramSocket serverSocket = new DatagramSocket(7000)){
for (int i = 0; i<3; i++) {
String message = "Message number " + i;
DatagramPacket datagramPacket = new DatagramPacket(
message.getBytes(),
message.length(),
InetAddress.getByName(clientIP),
clientPort
);
serverSocket.send(datagramPacket);
try(DatagramSocket serverSocket = new DatagramSocket(serverPort)){
byte[] buffer = new byte[65507];
//serverSocket.setSoTimeout(3000);
while (true) {
DatagramPacket datagramPacket = new DatagramPacket(buffer, 0, buffer.length);
serverSocket.receive(datagramPacket);
String receivedMessage = new String(datagramPacket.getData(), 0, datagramPacket.getLength());
System.out.println(receivedMessage);
}
} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
System.out.println("Timedout. CLient is closing.");
}
}
}