import java.net.*;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;

public class HelloServeur {
    public static void main(String[] args) {
        int port = 5000;
        int numeroClient = 0;

        try (DatagramSocket socket = new DatagramSocket(port)) {
            System.out.println("Lancement du serveur Java sur le port " + port);
            byte[] bufferReception = new byte[250];

            while (true) {
                //Réception du message
                DatagramPacket paquetReception = new DatagramPacket(bufferReception, bufferReception.length);
                socket.receive(paquetReception);

                String message = new String(paquetReception.getData(), 0, paquetReception.getLength());
                System.out.println("Message reçu : " + message);

                //Préparation de la réponse (Incrémentation du numéro)
                numeroClient++;
                System.out.println("Envoi du numéro : " + numeroClient);

                //Conversion du int en 4 octets (Little Endian pour le Client C)
                byte[] bufferEnvoi = ByteBuffer.allocate(4)
                                        .order(ByteOrder.LITTLE_ENDIAN)
                                        .putInt(numeroClient)
                                        .array();

                //Envoi de la réponse à l'expéditeur
                DatagramPacket paquetEnvoi = new DatagramPacket(
                    bufferEnvoi, 
                    bufferEnvoi.length, 
                    paquetReception.getAddress(), 
                    paquetReception.getPort()
                );
                socket.send(paquetEnvoi);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
