使用Java 取得目前機器的IP 位址
在開發多個節點運行在不同系統或連接埠的分散式系統時,取得本機的IP位址變得至關重要。但是,由於多個網路介面和與每個介面關聯的 IP 位址,使用 Inet4Address.getLocalHost().getHostAddress() 或 InetAddress.getLocalHost().getHostAddress() 可能會傳回錯誤的 IP 位址。
IP 位址選擇的注意事項
在這種情況下,節點必須將其 IP 位址註冊到引導節點。 IP 位址選擇應遵循以下優先順序:
使用網絡接口
NetworkInterface.getNetworkInterfaces( ) 方法提供本地電腦上網路介面的完整清單。每個網路介面可以有多個IP 位址。若要取得所有IP 位址,請使用下列程式碼迭代網路介面及其關聯的IP 位址:
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 位址的種類繁多,區分不同類型的IP非常重要位址:
結論
透過利用NetworkInterface API 並考慮IP 位址類型,您可以有效地取得正確的節點IP 位址並將其註冊到引導節點,確保分散式系統內的正確通訊。以上是如何在Java中為分散式系統可靠地取得正確的IP位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!