LINUX: getHostAddress() und getHostName() werfen Exception

Status
Nicht offen für weitere Antworten.

rapthor

Bekanntes Mitglied
Hallo,

ich habe eine Applikation mit ECLIPSE programmiert. Sie holt sich unter anderem den Netzwerknamen und die eigene IP Adresse des Rechners. Unter Windows kein Problem, aber LINUX wirft mir eine UnknownHostException ....

IP-Adresse ermitteln: InetAddress.getLocalHost().getHostAddress()
Hostnamen ermitteln: InetAddress.getLocalHost().getHostName()

Liegt es daran, dass ich das JAVA-Programm nicht als root ausführe? Wenn ja, was kann ich ändern, dass es trotzdem funktioniert, als normaler Benutzer?

Danke,
Rapthor
 

foobar

Top Contributor
Also bei mir wird keine Exception geworfen.

Ist das Netzwerk richtig konfiguriert?
Was gibt ifconfig als root aus?
Wie sieht die /etc/hosts aus?
 

rapthor

Bekanntes Mitglied
Meine /etc/hosts:

#
# hosts This file describes a number of hostname-to-address
# mappings for the TCP/IP subsystem. It is mostly
# used at boot time, when no name servers are running.
# On small systems, this file can be used instead of a
# "named" name server.
# Syntax:
#
# IP-Address Full-Qualified-Hostname Short-Hostname
#

127.0.0.1 localhost

# special IPv6 addresses
::1 localhost ipv6-localhost ipv6-loopback

fe00::0 ipv6-localnet

ff00::0 ipv6-mcastprefix
ff02::1 ipv6-allnodes
ff02::2 ipv6-allrouters
ff02::3 ipv6-allhosts

127.0.0.2 linux.local linux


Und hier meine ifconfig-Ausgabe als root:


eth0

Protokoll:Ethernet Hardware Adresse 00:0C:29:95:89:66
inet Adresse:192.168.2.16 Bcast:192.168.2.255 Maske:255.255.255.0
inet6 Adresse: fe80::20c:29ff:fe95:8966/64 Gültigkeitsbereich:Verbindung
UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1
RX packets:126 errors:0 dropped:0 overruns:0 frame:0
TX packets:113 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:100
RX bytes:24839 (24.2 Kb) TX bytes:8871 (8.6 Kb)
Interrupt:10 Basisadresse:0x10a4

lo

Protokoll:Lokale Schleife
inet Adresse:127.0.0.1 Maske:255.0.0.0
inet6 Adresse: ::1/128 Gültigkeitsbereich:Maschine
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:60 errors:0 dropped:0 overruns:0 frame:0
TX packets:60 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:0
RX bytes:3912 (3.8 Kb) TX bytes:3912 (3.8 Kb)
 

foobar

Top Contributor
Trag mal deinen Hostnamen in /etc/hostname und /etc/hosts ein:

/etc/hosts
Code:
192.168.2.16 myhostname

/etc/hostname
Code:
myhostname

Hast du einen Nameserver in /etc/resolv.conf angegeben?
 

rapthor

Bekanntes Mitglied
Er wirft bei beiden Methoden jeweils die Exception "UnknownHostException", da sie schon bei getLocalHost() auftritt.

Das Problem mit der IP-Adresse ist folgendes: Die bekomme ich per DHCP zugetielt, womit sie sich jedes Mal ändert. Und ich wollte mien JAVA Programm so gestalten, dass es möglichst auf jedem UNIX System auf gleichem Wege die IP des eigenen Rechners ermittelt.

Vielleicht sollte ich noch ansagen, dass mein LINUX als VMWare-Maschine mit "bridged ethernet" läuft, was aber im Prinzip trotzdem nichts daran ändert, dass es eine eigene (vom Host-System unabhängige) IP-Adresse zugeteilt bekommt und auch im Netzwerk als eigenständiger Rechner gefunden werden kann.

In meiner /etc/resolv.conf sind folgende Angaben nachzulesen:

nameserver 217.237.151.33
nameserver 217.237.149.225

Gibt es evtl. eine Methode in JAVA, mit der ich mittels Netzwerk-Interface Name an die IP komme? Der Name wäre bei mir ja "eth0" und ich denke, in fast allen üblichen Rechnern bräuchte ich genau die Adresse der "eth0".


Noch eine andere Frage: Kann man herausfinden auf welchem Betriebssystem die JAVA Applikation ausgeführt wird?


Danke für eure Bemühungen,
Rapthor
 

foobar

Top Contributor
Noch eine andere Frage: Kann man herausfinden auf welchem Betriebssystem die JAVA Applikation ausgeführt wird?

Code:
Properties p = System.getProperties();
        Iterator it = p.entrySet().iterator();
        
        while (it.hasNext())
        {
            Map.Entry  e = (Map.Entry) it.next();
            System.out.println(e.getKey() + " >> " + e.getValue());
        }
os.name
os.version
os.arch
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
FrankenDerStein HTTP Https Server Bibliothek für Linux und Android gesucht. Netzwerkprogrammierung 7
OnDemand Linux RAM per Thread Netzwerkprogrammierung 3
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
windl Windows vs Linux Netzwerkprogrammierung 11
U Socket Instant Messanger (Server Linux, Client Windows) Netzwerkprogrammierung 1
D Einfache Verbindung zu Linux Server und Datei auslesen Netzwerkprogrammierung 13
B Socket Verbindungsverlust unter Linux erkennen Netzwerkprogrammierung 5
Dit_ UDP Port bestimmen | Windows, MAC, Linux... Netzwerkprogrammierung 2
multiholle RMI Verbindung Linux <-> Windows Netzwerkprogrammierung 4
T RMI delay windows(client) <-> linux(server) Netzwerkprogrammierung 11
W Tcpdump aktive Netzwerkverbindungen/Programme (Linux) Netzwerkprogrammierung 2
DeviAn Über ein Linux Server ein Windows Server nach einer File fragen Netzwerkprogrammierung 6
N Über Socket an Linux-Server Kommandos absetzen? Netzwerkprogrammierung 4
K Server Client läuft in Windows allerdings nicht in Linux Netzwerkprogrammierung 9
H freigabe - unterschiedliche pfade unter linux und windows Netzwerkprogrammierung 7
psysp Paket unter Linux broadcaste Netzwerkprogrammierung 2
A Socket unter Linux Netzwerkprogrammierung 4
M IP Adressen auslesen und in Windows/Linux übergeben Netzwerkprogrammierung 5
B InetAddress.getHostAddress() wo kommt die IP Auslösung her? Netzwerkprogrammierung 6
P getHostAddress() liefert falsche IP Netzwerkprogrammierung 2
W getHostName liefert manchmal nur IP Netzwerkprogrammierung 1

Ähnliche Java Themen

Neue Themen


Oben