ホームページ >Java >&#&チュートリアル >分散システムの Java で正しい IP アドレスを確実に取得する方法

分散システムの Java で正しい IP アドレスを確実に取得する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-14 04:17:09889ブラウズ

How to Reliably Get the Correct IP Address in Java for Distributed Systems?

Java を使用して現在のマシンの IP アドレスを取得する

異なるシステムまたはポートで実行されている複数のノードを持つ分散システムを開発する場合、ローカル マシンの IP アドレスを取得することが重要になります。ただし、Inet4Address.getLocalHost().getHostAddress() または InetAddress.getLocalHost().getHostAddress() を使用すると、複数のネットワーク インターフェイスと各インターフェイスに関連付けられた IP アドレスが原因で、間違った IP アドレスが返される可能性があります。

IP アドレス選択に関する考慮事項

このシナリオでは、ノードはその IP を登録する必要がありますブートストラップノードへのアドレス。 IP アドレスの選択は、次の優先順位に従う必要があります。

  1. 利用可能な場合は PPP IP アドレスを優先します。
  2. PPP が利用できない場合は、LAN IP アドレスを使用します。
  3. ノードが同じ上にあると想定される場合は、フォールバックとして 127.0.0.1 を登録します。 computer.

ネットワーク インターフェイスの使用

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 を区別することが重要ですアドレス:

  • ループバック: 127.xxx.xxx.xxx
  • プライベート (サイトローカル): 192.168.xxx.xxx、 10.xxx.xxx.xxx、172.16.xxx.xxx ~ 172.31.xxx.xxx
  • リンクローカル: 169.254.xxx.xxx
  • マルチキャスト: 224.xxx.xxx.xxx から239.xxx.xxx.xxx
  • ブロードキャスト: 255.255.255.255
  • パブリック ポイントツーポイント: 上記の範囲外のもの

InetAddress を使用できます選択の優先順位に従って特定の IP アドレス タイプを確認する API。

結論

NetworkInterface API を利用し、IP アドレス タイプを考慮することで、正しい IP アドレス タイプを効果的に取得できます。ノードの IP アドレスをブートストラップ ノードに登録して、分散システム内での適切な通信を確保します。

以上が分散システムの Java で正しい IP アドレスを確実に取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。