Java を使用して現在のマシンの IP アドレスを取得する
異なるシステムまたはポートで実行されている複数のノードを持つ分散システムを開発する場合、ローカル マシンの IP アドレスを取得することが重要になります。ただし、Inet4Address.getLocalHost().getHostAddress() または InetAddress.getLocalHost().getHostAddress() を使用すると、複数のネットワーク インターフェイスと各インターフェイスに関連付けられた IP アドレスが原因で、間違った 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 を区別することが重要ですアドレス:
InetAddress を使用できます選択の優先順位に従って特定の IP アドレス タイプを確認する API。
結論
NetworkInterface API を利用し、IP アドレス タイプを考慮することで、正しい IP アドレス タイプを効果的に取得できます。ノードの IP アドレスをブートストラップ ノードに登録して、分散システム内での適切な通信を確保します。
以上が分散システムの Java で正しい IP アドレスを確実に取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。