这是在 Java 中,但如果需要,我总是可以通过 JNI 恢复为 C。
我有一个带有两个 NIC 的系统,每个 NIC 都连接到一个不同的子网。我想使用多播(特别是 SDP)来发现两个网络上的其他主机。
一个网络很简单:在指定的端口上创建一个 MulticastSocket,将它加入组,然后我得到数据包。简单。
两个网络:到目前为止不可能。我试过了:
1) 创建两个套接字,绑定到同一个端口并使用 setInterface() 或 setNetworkInterface() “连接”到正确的接口。没有运气,即使在 setReuseAddress() 的各种排列之后。
2) 创建一个套接字,然后尝试加入两次,两次调用 joinGroup(SocketAddress mcastaddr, NetworkInterface netIf)。第二次加入呼叫失败。
Java 之外的解决方案会很棒。特别是,如果我可以设置有效“组合”两个接口的多播路由(然后我可以查看每个数据包以确定哪个网络),那就没问题了。正如我之前提到的,任何数量的本机代码都可以在这个环境中使用(Linux,带有 Apache “luni” java 基础设施)。
谢谢!