用Java 決定目前機器的IP 位址
上下文:
上下文:在具有多個節點的分散式系統,每個節點都需要唯一的IP位址才能有效通訊。此 IP 位址必須向中央引導節點註冊才能實現無縫連線。然而,由於網路配置可能存在複雜性,因此取得正確的 IP 位址可能會很困難。
問題:使用 InetAddress.getLocalHost().getHostAddress( 的預設方法) )通常會傳回 LAN IP 位址而不是外部 PPP IP 位址。當節點嘗試連接到引導節點或其他節點時,這種不匹配會造成困難。
解決方案1:網路介面列舉Enumeration e = NetworkInterface.getNetworkInterfaces(); while (e.hasMoreElements()) { NetworkInterface n = (NetworkInterface) e.nextElement(); Enumeration ee = n.getInetAddresses(); while (ee.hasMoreElements()) { InetAddress i = (InetAddress) ee.nextElement(); System.out.println(i.getHostAddress()); } }
此方法提供所有IP 位址的完整清單。然而,區分正確的 IP 位址仍然具有挑戰性。
解決方案2:IP 位址類型區分InetAddress API 提供了測試每種類型位址的方法,以確定最適合的位址。
解決方案3:外部FQDN檢索InetAddress inetAddress = InetAddress.getByName("myFQDN"); String ipv4Address = inetAddress.getHostAddress();
以上是如何在 Java 中可靠地確定機器的外部 IP 位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!