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.
- Ich möchte, dass der Client seine PPP-IP registriert, falls vorhanden;
- Andernfalls die LAN-IP, falls verfügbar;
- 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