Aller au contenu

Réception d'un datagramme

La réception d'un datagramme suit des étapes similaires.

Cependant, étant donné qu'on doit écouter, le port doit être spécifié lors de la création du socket :

int port = 1234;

On devra également créer une mémoire tampon afin de stocker l'information (lignes 3 et 4) reçue avant de la transformer en texte (ligne 10).

try (DatagramSocket datagramSocket = new DatagramSocket(port)) {
    // Créer une mémoire tampon où mettre le message reçu
    byte[] buffer = new byte[1024];
    DatagramPacket datagramPacket = new DatagramPacket(buffer, buffer.length);

    // Recevoir un maximum de 1024 octets
    datagramSocket.receive(datagramPacket);

    // Afficher le message
    String message = new String(datagramPacket.getData(), 0, datagramPacket.getLength());
    System.out.println("Datagramme reçu : " + message);
}

Attention

Le code ci-dessus ne recevra qu'un seul datagramme UDP. Pour en recevoir de façon continue, on pourra utiliser une boucle while dans laquelle on recevra les datagrammes.

Par défaut, le serveur écoutera sur toutes les adresses IP disponibles (équivalent du 0.0.0.0). Il est possible d'écouter sur une adresse IP spécifique en spécifiant l'adresse IP lors de la création du socket :

InetAddress inetAddress = InetAddress.getByName("127.0.0.1");
try (DatagramSocket datagramSocket = new DatagramSocket(port, inetAddress)) {
    // Réception du message
}