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 adresseServeur = InetAddress.getByName("localhost"); int portServeur = 6666; // 2 - Envoyer un message au serveur String message = "Hello Server"; byte[] envoyees = message.getBytes(); DatagramPacket paquetEnvoye = new DatagramPacket( envoyees, envoyees.length, adresseServeur, portServeur); socketClient.send(paquetEnvoye); System.out.println("Message envoyé au serveur"); // 3 - Recevoir byte[] recues = new byte[1024]; // tampon de réception DatagramPacket paquetRecu = new DatagramPacket(recues, recues.length); socketClient.receive(paquetRecu); String reponse = new String(paquetRecu.getData(), 0, paquetRecu.getLength()); if (reponse.startsWith("PORT:")) { int newPort = Integer.parseInt(reponse.substring(5)); System.out.println("Connexion au nouveau port: " + newPort); // 4 - Communiquer sur le nouveau port String messagePort = "Message au nouveau port"; byte[] envoyeesPort = messagePort.getBytes(); DatagramPacket paquetPort = new DatagramPacket( envoyeesPort, envoyeesPort.length, adresseServeur, newPort); socketClient.send(paquetPort); } // 5 - Libérer le canal socketClient.close(); } catch (Exception e) { System.err.println(e); } } }