From 135af82172b31d6fd406f241fda98f3c8d899657 Mon Sep 17 00:00:00 2001 From: Morph01 <145839520+Morph01@users.noreply.github.com> Date: Tue, 25 Mar 2025 16:46:05 +0100 Subject: [PATCH] fix: basic client server on same port --- app/src/main/java/clientserver/Client.java | 31 ++++++++++++++++++++++ app/src/main/java/clientserver/Server.java | 30 +++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 app/src/main/java/clientserver/Client.java diff --git a/app/src/main/java/clientserver/Client.java b/app/src/main/java/clientserver/Client.java new file mode 100644 index 0000000..98bd287 --- /dev/null +++ b/app/src/main/java/clientserver/Client.java @@ -0,0 +1,31 @@ +package clientserver; + +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; + +public class Client { + public static void main(String[] args) { + try { + // 1 - Création du canal avec un port libre + DatagramSocket socketClient = new DatagramSocket(); + InetAddress adresseClient = InetAddress.getByName("localhost"); + byte[] envoyees; // tampon d'émission + byte[] recues = new byte[1024]; // tampon de réception + // 2 - Émettre + String message = "hello serveur RX302"; + envoyees = message.getBytes(); + DatagramPacket messageEnvoye = new DatagramPacket(envoyees, envoyees.length, adresseClient, 6666); + socketClient.send(messageEnvoye); + // 3 - Recevoir + DatagramPacket paquetRecu = new DatagramPacket(recues, recues.length); + socketClient.receive(paquetRecu); + String reponse = new String(paquetRecu.getData(), 0, paquetRecu.getLength()); + System.out.println(reponse + " @" + paquetRecu.getAddress() + ":" + paquetRecu.getPort()); + // 4 - Libérer le canal + socketClient.close(); + } catch (Exception e) { + System.err.println(e); + } + } +} diff --git a/app/src/main/java/clientserver/Server.java b/app/src/main/java/clientserver/Server.java index ab8d74c..71ca9db 100644 --- a/app/src/main/java/clientserver/Server.java +++ b/app/src/main/java/clientserver/Server.java @@ -1,6 +1,9 @@ package clientserver; +import java.net.DatagramPacket; import java.net.DatagramSocket; +import java.net.InetAddress; +import java.net.InetSocketAddress; public class Server { static void scannerUDP(int startPort, int endPort) { @@ -15,4 +18,31 @@ public class Server { System.out.println(e); } } + + public static void main(String[] args) { + try { + // 1 - Création du canal + DatagramSocket socketServeur = new DatagramSocket(null); + // 2 - Réservation du port + InetSocketAddress adresse = new InetSocketAddress("localhost", 6666); + socketServeur.bind(adresse); + byte[] recues = new byte[1024]; // tampon d'émission + byte[] envoyees; // tampon de réception + // 3 - Recevoir + DatagramPacket paquetRecu = new DatagramPacket(recues, recues.length); + socketServeur.receive(paquetRecu); + InetAddress adrClient = paquetRecu.getAddress(); + int prtClient = paquetRecu.getPort(); + System.out.println("Nouveau client : @" + adrClient + ":" + prtClient); + // 4 - Émettre + String reponse = "Serveur RX302 ready"; + envoyees = reponse.getBytes(); + DatagramPacket paquetEnvoye = new DatagramPacket(envoyees, envoyees.length, adrClient, prtClient); + socketServeur.send(paquetEnvoye); + // 5 - Libérer le canal + socketServeur.close(); + } catch (Exception e) { + System.err.println(e); + } + } }