- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
这里是一些代码,用于确定应该在多宿主机器上工作的本地主机名:
/**
* Work out the first local host name by iterating the network interfaces
*
* @return
* @throws SocketException
*/
private String findFirstLocalHostName() throws SocketException {
Enumeration<NetworkInterface> ifaces = NetworkInterface.getNetworkInterfaces();
while (ifaces.hasMoreElements()) {
NetworkInterface iface = ifaces.nextElement();
Enumeration<InetAddress> addresses = iface.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress add = addresses.nextElement();
if (!add.isLoopbackAddress() && add.isSiteLocalAddress()) {
return add.getHostName();
}
}
}
throw new RuntimeException("Failed to determine local hostname");
}
对 isSiteLocalAddress 的调用是否引入了错误?我找不到有关此方法的任何有用信息,但我感觉它仅与 IP v 6 相关并且已被弃用。
最佳答案
方法是definitely not deprecated而且它绝对不仅仅用于 IPv6。
在 IPv4 中有 3 network address ranges that are defined for site-local addresses : 10/8, 172.16/12 和 192.168/16.
阅读 Inet4Address.isSiteLocalAddress()
表明来自这 3 个网络的地址将在这些方法上返回 true
。
IPv6 有类似的概念,这里这些地址称为unique local addresses .
这有效地告诉您您拥有的地址是否绝对不是公共(public)地址(请注意,即使此方法返回 false
,该地址可能仍然不是公共(public)地址)。
关于java - InetAddress.isSiteLocalAddress() 到底是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5619345/
我检查了java.net.InetAddress 类的源文件,发现很少有方法总是返回false。例如 /** * Utility routine to check if the InetAddres
这里是一些代码,用于确定应该在多宿主机器上工作的本地主机名: /** * Work out the first local host name by iterating the network i
我是一名优秀的程序员,十分优秀!