2013-04-29 23 views
3

我正嘗試訂閱特定的市場數據饋送,通過FAST協議通過多播分發。在Java中,有MulticastSocket,支持多播的是DatagramChannel定義了數據報源的Java MulticastSocket

我使用的FAST協議庫OpenFAST接受MulticastSocket實例來創建端點,但似乎不可能在其配置中指定源IP地址,它綁定到「任何源」,這不適用於此市場數據饋送。這可能(因爲Java的1.7),創建具有源IP一個DatagramChannel定義,喜歡這裏描述:

NetworkInterface interf = NetworkInterface.getByName("eth0"); 
InetAddress group = InetAddress.getByName("225.0.0.100"); 
InetAddress source = InetAddress.getByName("172.20.40.1"); 

DatagramChannel dc = DatagramChannel.open(ProtocolFamily.INET) 
    .setOption(SocketOption.SO_REUSEADDR, true) 
    .bind(new InetSocketAddress(5000)) 
    .setOption(SocketOption.IP_MULTICAST_IF, interf); 

MembershipKey key = dc.join(group, interf, source); // <- source specified 

不過,我沒有看到一個方式來獲得通道MulticastSocket,則socket()方法返回只是普通的舊DatagramSocket

有沒有辦法創建MulticastSocket啓用源過濾,直接或從DatagramChannel

回答