Le multicast en Java A. Obaid © - Programmation des réseaux Multicast Java 1 Multicast en Java Pour envoyer à (ou recevoir de) un groupe de multicast, il est tout nécessaire de s'inscrire dans le groupe: – Un message Internet Group Management Protocol (IGMP) envoyé au routeur le plus proche – Un datagramme est créé, adressée au groupe (et le port choisi) Java possède une socket spécialisée pour la multicast: – java.net.MulticastSocket A. Obaid © - Programmation des réseaux Multicast Java 2 java.net.MulticastSocket Sous classe de java.net.DatagramSocket avec les méthodes : – void joinGroup(InetAddress groupeMC) Rejoindre un groupe pour l’envoi des datagrammes – void leaveGroup(InetAddress groupeMC) Quitter un groupe. – void setTimeToLive(int ttl) Préciser le TTL – int getTimeToLive() Obtenir la valeur du TTL A. Obaid © - Programmation des réseaux Multicast Java 3 Envoi multicast Les étapes à suivre: – Créer le socket multicast. – Rejoindre le groupe multicast – Créer un packet DatagramPacket. – Envoyer le paquet à travers la socket. – Quitter le groupe à la sortie. A. Obaid © - Programmation des réseaux Multicast Java 4 Envoi - Exemple InetAddress groupeMC = InetAddress.getByName(adresseGroupeMC); MulticastSocket s= new MulticastSocket(); s.joinGroup(groupeMC); s.setTimeToLive(5); byte[] data = “Ceci est le message envoye”.getBytes(); DatagramPacket datagram = new DatagramPacket(data, data.length); datagram.setAddress(groupeMC); datagram.setPort(9876); s.send(datagram); s.leaveGroup(groupeMC); A. Obaid © - Programmation des réseaux Multicast Java 5 Reception multicast Les étapes à suivre: – Créer une socket de multicast sur un port précis. – Rejoindre le groupe de multicast (au démarrage). – Créer un datagramme vide. – Attendre l’arrivée de datagramme. – Quitte le groupe de multicast (à la sortie). A. Obaid © - Programmation des réseaux Multicast Java 6 Réception - Exemple InetAddress groupeMC = InetAddress.getByName(adresseGroupeMC); MulticastSocket s = new MulticastSocket(9876); s.joinGroup(groupeMC); byte[] data = new byte[1000]; DatagramPacket paquet = new DatagramPacket(data, data.length); s.receive(paquet ); String message = new String(paquet.getData(), 0, paquet .getLength()); s.leaveGroup(groupeMC); A. Obaid © - Programmation des réseaux Multicast Java 7