ReceiveUDP.java

package fr.umlv.ji.udp;
import java.net.*;
/** Permet de recevoir et d'afficher les messages destinés à un port,
    et éventuellement une adresse, donnés. Si aucune adresse n'est
    fournie, la socket est attachée à l'adresse Internet wilcard. */
public class ReceiveUDP {
  final static int BUF_SIZE = 1024;
  public static void main(String[] args) {
    if (args.length == 0) {
      System.out.println("Usage: "
                 +"java fr.umlv.ji.udp.ReceiveUDP <port> [addr]");
      System.exit(1);
    }
    try {
      byte[] buf = new byte[1024];           // zone de réception
      DatagramPacket packet = new DatagramPacket(buf, 0, buf.length); 
      int port = Integer.parseInt(args[0]);  // port de réception
      DatagramSocket socket = null;
      if (args.length > 1) 
    // Attachement à une adresse Internet explicitement spécifiée
    socket = new DatagramSocket(port,InetAddress.getByName(args[1]));
      else
    // Par défaut, attachement à l'adresse Internet wildcard 
    socket = new DatagramSocket(port);
      System.out.println("Attente de réception sur " +
             socket.getLocalSocketAddress());
      while (true) { 
    socket.receive(packet);
    String s = new String(packet.getData(),packet.getOffset(),
                  packet.getLength());
    System.out.println("Message reçu de "+
               packet.getSocketAddress() + "\n\t" + s);
    packet.setData(buf,0,buf.length);
      }
    } catch (Exception e) {
      System.err.println("Erreur à l'exécution :");
      e.printStackTrace(System.err);
    }
  }
}