在
在Java中,希望找到与正在使用的接口对应的Java.net.network接口到达默认网关。 接口的名称等并不是事先已知的。
也就是说,如果以下是我的路由表,则希望接口与“bond0”对应。
$netstat -r
kernel IP路由表
目标网关掩码smsswindowirttiface
10.10.10.0 * 255.255.255.0 u 00 bond 0
10.10.11.0 * 255.255.255.0 u 00 eth 2
10.10.11.0 * 255.255.255.0 u 00 eth 3
10.10.12.0 * 255.255.255.0 u 00 eth 4
10.10.13.0 * 255.255.255.0 u 00 eth 5
efaultmygateway0.0.0.0ug00 bond 0
做了几个谷歌搜索后,我还没找到任何答案。
编辑:
运行Java时,必须“知道”如何获取此信息。 并不是说它是公开的。 使用join(inetaddressgrpaddr )调用)将java.net.MulticastSocket连接到多播组时,明显的行为看起来像参与了“默认”接口:
结构IP _ mreqn组;
group.imr_multiaddr=.
group.IMR _ address=* * addressoftheinterface! **
setsockopty(SD,IPPROTO_IP,IP_ADD_MEMBERSHIP,group,sizeof ) group );
重要信息:通过提供加入不需要intf的多播组的方法,java平台需要知道如何在每个平台上确定合适的intf。