2010-11-12 39 views
1

有沒有更好的方法來檢查我是否可以接收給定的IP多播傳輸。下面的代碼工作正常,但這個代碼有問題 - 它阻塞當前線程,直到它獲得多播數據包。IPv6多播檢查Java

謝謝。

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) { 
     } 
    } 
} 

回答