2010-11-12 5 views
1

Y a-t-il une meilleure façon de vérifier si je peux recevoir une transmission IP Multicast donnée? Le code suivant fonctionne correctement, mais il y a un problème dans ce code: il bloque le thread en cours jusqu'à ce qu'il obtienne les paquets de multidiffusion.IPv6 Multicast Check Java

Merci.

import java.net.DatagramPacket; 
import java.net.InetAddress; 
import java.net.MulticastSocket; 

public class MulticastTest { 

    static String MCAST_ADDR = "FF7E:230::1234";// "235.1.1.1"; 
    static int DEST_PORT = 1234; 
    static int BUFFER_LENGTH = 16; 

    public static void main(String args[]) { 

     try { 
      byte[] b = new byte[BUFFER_LENGTH]; 
      DatagramPacket dgram = new DatagramPacket(b, b.length); 
      MulticastSocket socket = new MulticastSocket(DEST_PORT); 
      socket.joinGroup(InetAddress.getByName(MCAST_ADDR)); 
      socket.receive(dgram); // blocks until a datagram is received 
      System.err.println("Received " + dgram.getLength() + " bytes from " + dgram.getAddress()); 
      dgram.setLength(b.length); // must reset length field! 
     } catch (Exception e) { 
     } 
    } 
} 

Répondre