Heim >Java >javaLernprogramm >Wie kann die externe IP-Adresse einer Maschine in Java zuverlässig ermittelt werden?
Bestimmen der IP-Adresse der aktuellen Maschine in Java
Kontext:
In a Bei einem verteilten System mit mehreren Knoten benötigt jeder Knoten eine eindeutige IP-Adresse, um effektiv kommunizieren zu können. Diese IP-Adresse muss für eine nahtlose Konnektivität bei einem zentralen Bootstrap-Knoten registriert sein. Allerdings kann es aufgrund möglicher Komplikationen bei Netzwerkkonfigurationen schwierig sein, die richtige IP-Adresse zu erhalten.
Problem:
Der Standardansatz mit InetAddress.getLocalHost().getHostAddress( ) gibt häufig die LAN-IP-Adresse anstelle der externen PPP-IP-Adresse zurück. Diese Nichtübereinstimmung führt zu Schwierigkeiten, wenn Knoten versuchen, eine Verbindung zum Bootstrap-Knoten oder anderen Knoten herzustellen.
Lösung 1: Netzwerkschnittstellenaufzählung
Um alle verfügbaren IP-Adressen abzurufen, die mit dem verknüpft sind Maschine verwenden Sie den folgenden Code:
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()); } }
Dieser Ansatz stellt eine umfassende Liste aller IP-Adressen bereit. Die Unterscheidung der richtigen IP-Adresse bleibt jedoch eine Herausforderung.
Lösung 2: Unterscheidung des IP-Adresstyps
Bestimmen Sie den Typ der IP-Adresse anhand ihres Wertebereichs:
Die InetAddress-API bietet Methoden zum Testen für jeden Adresstyp, um die am besten geeignete zu identifizieren.
Lösung 3: Externer FQDN-Abruf
Besorgen Sie sich den extern beworbenen vollqualifizierten Domänennamen (FQDN) und verwenden Sie ihn es, um die primäre IP-Adresse nachzuschlagen:
InetAddress inetAddress = InetAddress.getByName("myFQDN"); String ipv4Address = inetAddress.getHostAddress();
Diese Methode basiert auf der DNS-Auflösung und ist möglicherweise nicht in allen Szenarien durchführbar, insbesondere bei Vorhandensein von Load Balancern.
Das obige ist der detaillierte Inhalt vonWie kann die externe IP-Adresse einer Maschine in Java zuverlässig ermittelt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!