348 Stimmen

Abfrage der IP-Adresse des aktuellen Rechners mit Java

Ich versuche, ein System zu entwickeln, bei dem es verschiedene Knoten gibt, die auf verschiedenen Systemen oder auf verschiedenen Ports desselben Systems ausgeführt werden.

Nun erstellen alle Knoten einen Socket mit einer Ziel-IP, die die IP eines speziellen Knotens ist, der als Bootstrapping-Knoten bezeichnet wird. Die Knoten erstellen dann ihre eigenen ServerSocket und beginnen Sie, nach Verbindungen zu suchen.

Der Bootstrapping-Knoten verwaltet eine Liste von Knoten und gibt sie bei Abfrage zurück.

Was ich jetzt brauche, ist, dass der Knoten seine IP beim Bootstrapping-Knoten registrieren muss. Ich habe versucht, mit cli.getInetAddress() sobald der Client eine Verbindung zum ServerSocket von Bootstrapping-Knoten, aber das hat nicht funktioniert.

  1. Ich möchte, dass der Client seine PPP-IP registriert, falls vorhanden;
  2. Andernfalls die LAN-IP, falls verfügbar;
  3. Andernfalls muss er 127.0.0.1 registrieren, vorausgesetzt, es handelt sich um denselben Computer.

Verwenden Sie den Code:

System.out.println(Inet4Address.getLocalHost().getHostAddress());

oder

System.out.println(InetAddress.getLocalHost().getHostAddress());

Die IP-Adresse meiner PPP-Verbindung lautet: 117.204.44.192, aber der obige Befehl liefert mir 192.168.1.2

EDIT

Ich verwende 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());
    }
}

Ich bin in der Lage, alle IP-Adressen zu erhalten, die mit allen NetworkInterface s, aber wie kann ich sie unterscheiden? Dies ist die Ausgabe, die ich erhalte:

127.0.0.1
192.168.1.2
192.168.56.1
117.204.44.19

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X