ホームページ >Java >&#&チュートリアル >Java でマシンの外部 IP アドレスを確実に特定する方法
Java での現在のマシンの IP アドレスの決定
コンテキスト:
複数のノードを含む分散システムでは、各ノードが効果的に通信するために一意の IP アドレスが必要です。シームレスな接続を実現するには、この IP アドレスを中央ブートストラップ ノードに登録する必要があります。ただし、ネットワーク構成が複雑になる可能性があるため、正しい IP アドレスを取得するのは困難な場合があります。
問題:
InetAddress.getLocalHost().getHostAddress( ) 多くの場合、外部 PPP IP アドレスの代わりに LAN 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 アドレスのタイプの区別
値の範囲に基づいて IP アドレスのタイプを決定します。
InetAddress API は、最も適切なアドレスを識別するために各タイプのアドレスをテストするメソッドを提供します。
解決策 3: 外部 FQDN 取得
外部に公開された完全修飾ドメイン名を取得する(FQDN) を取得し、それを使用してプライマリ IP アドレスを検索します。
InetAddress inetAddress = InetAddress.getByName("myFQDN"); String ipv4Address = inetAddress.getHostAddress();
この方法は DNS 解決に依存しているため、すべてのシナリオ、特にロード バランサーが存在する場合には実行できない可能性があります。
以上がJava でマシンの外部 IP アドレスを確実に特定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。