package clientserver; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.InetSocketAddress; public class ClientHandler { static void main(String[] args) { int port = 6666; boolean running = true; DatagramSocket socketServer = null; while (running) { try { // 1 - Création du canal socketServer = new DatagramSocket(null); // 2 - Réservation du port InetSocketAddress address = new InetSocketAddress( "localhost", port ); socketServer.bind(address); // 3 - Recevoir byte[] recues = new byte[1024]; // tampon de réception DatagramPacket receivedPacket = new DatagramPacket( recues, recues.length ); socketServer.receive(receivedPacket); Thread thread = new Thread(() -> createThread(receivedPacket)); thread.start(); } catch (Exception e) { System.err.println(e); } } socketServer.close(); } public static void createThread(DatagramPacket packet) { try { InetAddress clientAddress = packet.getAddress(); int clientPort = packet.getPort(); System.out.println( "Nouveau client : @" + clientAddress + ":" + clientPort ); DatagramSocket socket = new DatagramSocket(); // Reserve new port String response = "PORT:" + socket.getLocalPort(); byte[] envoyees; // tampon d'émission envoyees = response.getBytes(); DatagramPacket packetToSend = new DatagramPacket( envoyees, envoyees.length, clientAddress, clientPort ); socket.send(packetToSend); } catch (Exception e) { System.err.println(e); } } static void scannerUDP(int startPort, int endPort) { try { for (int i = startPort; i < endPort; i++) { try (DatagramSocket socket = new DatagramSocket(i)) {} catch ( Exception e ) { System.out.println("Port n°" + i + " déjà occupé"); } } } catch (Exception e) { 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); // } // } }