Ich möchte die lokale IP-Adresse von meinem Java-Applet zu bestimmen. Das Problem tritt auf, wenn sich mehrere IP-Adressen auf demselben Rechner befinden, der über LAN- und Internet-Verbindungen verfügt ( (Palm, VMWare ...)).Holen Sie sich die richtige lokale IP-Adresse von Java-Applet
Hier ist mein Test:
public static void main(String[] args) {
try {
String hostName = InetAddress.getLocalHost().getHostName();
System.out.println("HostName = " + hostName);
System.out.println("HostAddressLocal = " +
InetAddress.getLocalHost().getHostAddress());
InetAddress[] inetAddresses = InetAddress.getAllByName(hostName);
for (InetAddress inetAddress : inetAddresses) {
System.out.println("hostAddress = " + inetAddress.getHostAddress());
}
} catch (Exception e) {
e.printStackTrace();
}
}
Das Ergebnis ist:
HostName = xxxx
HostAddressLocal = xx.xx.xx.xx
hostAddress = 10.10.11.51
hostAddress = 192.168.23.1
hostAddress = 192.168.106.1
wo xx.xx.xx.xx nicht die korrekte Adresse ist. Das richtige ist 10.10.11.51.
EDIT als Antwort auf jarnbjo:
Ihre Kristallkugel sagen die Wahrheit. Du hast mein Problem verstanden. Der Client kann eine Verbindung über einen Proxy herstellen, sodass ich Ihren ersten Punkt nicht verwenden kann. Wenn ich diesen Code unten auf meinem Computer ausführen:
Socket s = new Socket("www.w3c.org", 80);
InetAddress ip = s.getLocalAddress();
System.out.println("Internet IP = " + ip.toString());
s.close();
Ich habe dieses Ergebnis:
Internet IP = /127.0.0.1
Und nicht 10.10.11.51
Meinst du Applet? Mit einem Haupt- und Zugang zur lokalen UP-Adresse? –
Wir hatten dieses Problem auch. – KLE
Was genau versuchen Sie zu tun? Warum benötigen Sie diese Informationen? Was passiert, wenn der Benutzer keine lokale Adresse hat? Was ist, wenn der Benutzer viele Schnittstellen und viele lokale Adressen hat? Was ist, wenn der Benutzer IPv6 hat (wobei jede Schnittstelle möglicherweise viele Adressen haben kann)? Es gibt ein Designproblem in Ihrem Programm, es sollte sich niemals darauf verlassen, dass dieses Merkmal korrekt funktioniert. – Juliano