INet - IP auslesen???

Von: , Frage gestellt am Di, 17. Jul 2001

Hallo,

weiß jemand zufällig eine Methode in JAVA, wie man die eigene IP ausliest, mit der man gerade im Internet eingewählt ist. (getLocalHost() gibt leider nur die Netzwerkinterne ip zurück)

Wäre doll wenn da jeman bescheid wüsste!

Grüsse
Cromo

6 Antworten zu dieser Frage

  1. Antwort von nach 7 Stunden 0 hilfreich
    Re: INet - IP auslesen???

    Hi Chromosom (X oder Y?),

    versuchs mal in etwa so:

    try
    {
    InetAddress[] addr = InetAddress.getAllByName("Hier Dein Rechnername");
    String HostAdresse = addr[1].getHostAddress();
    //...
    }
    catch (UnknownHostException e)
    {
    System.err.println("Host nicht gefunden!");
    System.exit(1);
    }
    //...

    InetAddress.getByName(HostName) ermittelt nämlich nur die erste vergebene IP und die scheint nach meiner Erfahrung immer die lokale Netzwerk-IP zu sein. addr[1] liefert also den zweiten Eintrag und das ist die dynamische Internet-IP.

    Viel Erfolg,
    Marc

    • Antwort von nach 6 Tagen 0 hilfreich
      Re^2: INet - IP auslesen???

      Hi Marc,

      vielen Dank! Leider funktioniert das nicht. Ich bekomme immer eine IndexOutOfBoundException, was heissen mag, dass er nur eine und zwar die LocalIP im Array speichert (Index 0) nicht aber weitere, sonst würde die Abfrage von Index 1 keinen Fehler hervorrufen. Totzdem vielen, vielen Dank!


      Grüsse
      Cromo

      (PS: Ich bin kein X oder Y Cromosom, sondern nur eines ohne H ! ;-)

      • Antwort von nach 6 Tagen 0 hilfreich
        Re^3: INet - IP auslesen???

        Ich bekomme immer eine IndexOutOfBoundException,
        was heissen mag, dass er nur
        eine und zwar die LocalIP im Array speichert (Index 0) nicht
        aber weitere, sonst würde die Abfrage von Index 1 keinen
        Fehler hervorrufen.
        Die ArrayIndexOutOfBoundsException kannst Du ja gerne mit catch abfangen, was Dir dann sagt, dass Du nicht eingewählt bist. Wenn Du aber eingewählt bist, sollte in addr[1] Deine dynamische IP stehen.
        Allerdings nur für den Fall dass Du auch eine lokale NetzwerkIP hast (respektive eine Netzwerkarte eingebaut hast)!! Davon war ich jetzt ausgegangen, weil es bei mir der Fall ist. Ansonsten vermute ich, dass das Ergebnis dann in addr[0] steht und bei Nichteinwahl-Zustand überhaupt keine Adressen zu ermitteln sind. Im Übrigen sollte der Code eigentlich gleich bleiben können. (PS: Ich bin kein X oder Y Cromosom, sondern nur eines ohne H
        ! ;-)
        Schade... =:^)

        Viel Erfolg,
        Marc

        • Antwort von nach 6 Tagen 0 hilfreich
          Re^4: INet - IP auslesen???

          Hi Marc,
          klaro muss ich zuvor eingewählt sein, ist doch logisch.. ;-)))
          Ich glaube es liegt entweder daran, dass ich per DSL mit dem Inet verbunden bin (Netzwerkkarte), oder der Server (Firewall)macht Probleme, da ich mit mehreren Rechnern gleichzeitig im Netz bin. Der Test bei einem Freund, der per Modem "direkt" im Internet war, hatte jedenfalls funktioniert, was zeigt, dass Dein Algorithmus schon korrekt ist ;-)).
          Danke nochmals!

          Grüsse
          Cromo

          • Antwort von nach 7 Tagen 0 hilfreich
            Re^5: INet - IP auslesen???

            Ich glaube es liegt entweder daran, dass ich per DSL mit dem
            Inet verbunden bin (Netzwerkkarte), oder der Server
            (Firewall)macht Probleme, da ich mit mehreren Rechnern
            gleichzeitig im Netz bin.
            Ich bin auch per DSL drin, das ist nicht das Problem. Die Firewall hat sicher auch nichts damit zu tun.
            Das ganze klappt eben nicht, wenn ein Server ins Netz geht und Du die Verbindung mitnutzt. Dann muss das Java-Programm schon auf dem Server laufen und die dort vorhandene IP auslesen.

            Einfacher geht das ganze natürlich über ipconfig (WinNT+2k) bzw. winipcfg (Win9x+ME). Zum Beispiel könntest Du mit dem Taskplaner regelmäßig eine Textdatei aktualisieren (die im Netz freigegeben ist), z.B. mit dem Befehl (Win2k)
            ipconfig /all >dyn_ip.txt

            Vielleicht bringt das ja noch die Wende... ;)

            Tschö,
            Marc

            • Antwort von nach 7 Tagen 0 hilfreich
              Re^6: INet - IP auslesen???

              Hallo Marc,
              erstmal danke, dass Du so oft "Zeit für mich" hast! ;-)
              Also Du meinst, es liegt nicht am DSL und auch nicht an der Firewall? Hmmm... Dann kann es nur noch sein, dass ich meinen Server(Linux) irgendwie falsch konfiguriert habe und JAVA deshalb nicht an die externe IP kommt.
              Das mit dem Textfile ist gar nicht so übel, hat aber den Nachteil, dass ich auf externe Programme angewiesen bin, was ich unbedingt vermeiden möchte. Zur Zeit holt sich mein Programm die IP über einen externen Server auf dem ich ein PHP-Skript abgelegt habe, dass die REMOTE_IP ausliest und zurückgibt, die dann JAVA weiterverwendet. Der Nachteil ist halt, dass man in regelmäßigen Intervallen auf den Server zugreifen muss, was ich jedoch wiederum nicht möchte... aber bis jetzt ist es halt die einzige, weitgehenst unabhängige und funktionierende Lösung.

              Grüsse
              Cromo

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!