Java MulticastSocket与指定数据报来源的定义

3
我正在尝试订阅通过FAST协议以组播方式分发的特定市场数据源。在Java中,有 MulticastSocketDatagramChannel 支持组播。
我使用的 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

是否有一种方式可以直接或从DatagramChannel创建启用源过滤的 MulticastSocket

1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接