有没有一种内置的编程方法来确定机器是否是多宿主的?我有下面的代码片段,它可以完成任务,但看起来很麻烦。有没有更好的方法来做这件事?
int count = 0;
try {
InetAddress localhost = InetAddress.getLocalHost();
InetAddress[] allMyIps = InetAddress.getAllByName(localhost.getCanonicalHostName());
if (allMyIps != null && allMyIps.length > 1) {
for (int i = 0; i < allMyIps.length; i++) {
if (allMyIps[i].isLoopbackAddress() == false) count++;
}
}
if (count > 1) System.out.println("Multihomed");
} catch (UnknownHostException e) {
e.printStackTrace();
}我对此表示怀疑,因为默认情况下,所有混合网卡都配置了IpV6和IPv4 (至少在Windows7中是这样)。因此,这些作为一个多宿主出来了。有没有一种有效的方法来做到这一点?
发布于 2017-11-15 09:59:40
您可以在java中使用"NetworkInterface“类。如果存在除环回接口之外的多个接口,则其多宿主。
Enumeration<NetworkInterface> ifs = NetworkInterface.getNetworkInterfaces();
int count = 0;
while (ifs.hasMoreElements()) {
if (count > 1) {
break;
}
if(!ifs.nextElement().isLoopback()) {
count++;
}
}
System.out.println(count > 1 ? "Multi-homed" : "Not Multi-homed");https://stackoverflow.com/questions/21038901
复制相似问题