Ich versuche, ein System zu entwickeln, in dem verschiedene Knoten auf verschiedenen Systemen oder an verschiedenen Ports auf demselben System ausgeführt werden.
Jetzt erstellen alle Knoten einen Socket mit einer Ziel-IP als IP eines speziellen Knotens, der als Bootstrapping-Knoten bezeichnet wird. Die Knoten erstellen dann ihre eigenen ServerSocket
und warten auf Verbindungen.
Der Bootstrapping-Knoten verwaltet eine Liste von Knoten und gibt diese bei Abfrage zurück.
Was ich jetzt brauche, ist, dass der Knoten seine IP beim Bootstrapping-Knoten registrieren muss. Ich habe versucht, zu verwenden, cli.getInetAddress()
sobald der Client eine Verbindung zum ServerSocket
Bootstrapping-Knoten hergestellt hat, aber das hat nicht funktioniert.
- Ich benötige den Client, um seine PPP-IP zu registrieren, falls verfügbar.
- Andernfalls die LAN-IP, falls verfügbar;
- Andernfalls muss 127.0.0.1 unter der Annahme registriert werden, dass es sich um denselben Computer handelt.
Verwenden des Codes:
System.out.println(Inet4Address.getLocalHost().getHostAddress());
oder
System.out.println(InetAddress.getLocalHost().getHostAddress());
Meine PPP-Verbindungs-IP-Adresse lautet: 117.204.44.192, aber die oben angegebene Adresse gibt mir 192.168.1.2 zurück
BEARBEITEN
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 kann alle IP-Adressen abrufen, die allen NetworkInterface
s zugeordnet sind, aber wie unterscheide ich sie? Dies ist die Ausgabe, die ich bekomme:
127.0.0.1
192.168.1.2
192.168.56.1
117.204.44.19