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
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
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
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 ! 
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
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
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
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