Holen Sie sich die richtige lokale IP-Adresse von java-Applets

Ich würde gerne zur Bestimmung der lokalen IP-Adresse von meinem java-applet. Das problem ist, wenn es mehrere IP-Adressen auf der gleichen Maschine, die hat LAN und internet verbindungen
(palm, VMWare...).

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

Ist das Ergebnis :

    HostName = xxxx
    HostAddressLocal = xx.xx.xx.xx
    hostAddress = 10.10.11.51
    hostAddress = 192.168.23.1
    hostAddress = 192.168.106.1

wobei xx.xx.xx.xx ist nicht die richtige Adresse. Die richtige ist 10.10.11.51.


BEARBEITEN in Reaktion auf jarnbjo :

Deine Kristallkugel die Wahrheit sagen. Haben Sie verstehen mein problem. Kann der client die Verbindung über einen proxy, so dass ich nicht verwenden können, Ihren ersten Punkt. Wenn ich diesen code ausführen, werden unten auf meinem computer :

    Socket s = new Socket("www.w3c.org", 80); 
    InetAddress ip = s.getLocalAddress(); 
    System.out.println("Internet IP = " + ip.toString()); 
    s.close(); 

Habe ich dieses Ergebnis :

    Internet IP = /127.0.0.1 

Und nicht 10.10.11.51

  • Meinst du das applet? Mit einem Haupt-und in der Lage, Zugang zu lokalen UP-Adresse?
  • Wir hatten das problem auch.
  • Was genau wollen Sie tun? Warum brauchen Sie diese Informationen? Was ist, wenn der Benutzer nicht über eine lokale Adresse? Was ist, wenn der Nutzer hat viele Schnittstellen und viele lokale Adressen? Was ist, wenn der Benutzer von IPv6 (was jede Schnittstelle kann potenziell viele Adressen haben)? Es gibt einige design-problem auf Ihrem Programm, Sie sollten nie verlassen sich auf dieses Merkmal, um korrekt zu arbeiten.
  • Gleiche problem hier, danke für den post 😉
InformationsquelleAutor EFalco | 2009-10-02
Schreibe einen Kommentar