使用 Java 获取当前机器的 IP 地址
挑战和注意事项
在分布式系统中,确定特定机器的 IP 地址是这不是一项简单的任务。这种复杂性的出现是由于可能存在多个网络接口以及与每个接口关联的 IP 地址。此外,并非所有 IP 地址都可以从外部访问。
获取所有关联的 IP 地址
检索链接到计算机的所有 IP 地址的一种方法是利用 NetworkInterface 类。此方法循环访问每个网络接口并提取其关联的 IP 地址。然而,区分它们是一个挑战。
区分 IP 地址
要区分 IP 地址,请使用以下标准:
-
环回地址: 范围 127.0.0.0 - 127.255.255.255
-
私有(站点本地)地址:范围 192.168.0.0 - 192.168.255.255、10.0.0.0 - 10.255.255.255、172.16.0.0 - 172.31.255.255
-
链接本地地址:范围 169.254.0.0 - 169.254.255.255
-
多播地址:范围 224.0.0.0 - 239.255.255.255
-
广播地址: 255.255.255.255
-
公共 IP 地址: 不属于上述范围的任何其他 IPv4 地址类别
InetAddress API 提供了测试特定 IP 地址类型的方法,有助于识别最合适的地址。
替代方法
获取 IP 地址类型的其他方法机器的 IP 地址包括:
-
获取 FQDN 和使用 DNS 查找: 获取主机外部公布的 FQDN 并使用 InetAddress.getByName() 搜索其主 IP 地址。
-
从配置中检索首选 FQDN 或 IP 地址: 指定配置文件中或通过命令行所需的 FQDN 或 IP 地址
虽然 InetAddress.getLocalHost() 通常会检索正确的 IP 地址,但在复杂的网络环境中可能需要其他方法。
以上是在多接口网络中如何获取Java机的正确IP地址?的详细内容。更多信息请关注PHP中文网其他相关文章!