如何在 Java 中确定路由器/网关的 IP?我可以很容易地获得我的IP。我可以使用网站上的服务获取我的互联网 IP。但我如何确定我的网关的 IP?
如果您了解相关方法,那么在 .NET 中这有点容易。但在 Java 中如何做到这一点呢?
在 Windows、OSX、Linux 等上,Chris Bunch 的答案可以通过使用得到很大的改进
netstat -rn
代替一个traceroute
命令。
您的网关的 IP 地址将出现在以下任一行开头的第二个字段中:default
or 0.0.0.0
.
这解决了尝试使用时的许多问题traceroute
:
- 在 Windows 上
traceroute
实际上是tracert.exe
,所以代码中不需要操作系统依赖
- 这是一个快速运行的命令 - 它从操作系统而不是网络获取信息
-
traceroute
有时会被网络屏蔽
唯一的缺点是需要不断地读取行netstat
输出直到找到正确的行,因为将有不止一行输出。
EDIT:如果您使用的是 MAC(在 Lion 上测试),则默认网关的 IP 地址位于以“default”开头的行的第二个字段中,或者在第三场以“0.0.0.0”开头的行(在 Windows 7 上测试)
Windows:
网络目标网络掩码网关接口指标
0.0.0.0 0.0.0.0192.168.2.254192.168.2.46 10
Mac:
目标网关标志参考使用 Netif 过期
默认192.168.2.254UGSc 104 4 en1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)