IP - abfragen ?

S

SolarLaser

Gast
Hallo,

Habe ein kleines Problem mit der IP-abfrage ?

Es wird nur 0.0.0.0 ausgegeben, wie könnte man es umschreiben ?

Java:
Socket s = new Socket();
 InetAddress ia = s.getLocalAddress();
 String queryA = ia.toString();

Danke
S.
 

Fab1

Top Contributor
Welche IP willst du denn ausgeben?

Deine eigene IP solltest du so erhalten:

Java:
InetAddress inet = InetAddress.getLocalHost(); 
System.out.println( inet.getHostAddress() );
 
T

tröööt

Gast
naja ... 0.0.0.0 ist ja bei einem nicht verbunden socket auch völlig korrekt ... wobei eigentlich eher ne exception kommen sollte anstatt das ...
denn wenn ein socket nicht verbunden ist hat er weder ziel noch quelle ... und damit ist er unbestimmt ...

um die eigene ip zu bekommen kann man auch mit [japi]NetworkInterface[/japi] rumspielen ...

oder sollst die public-WAN-ip werden ? das wird dann ohne dienst im netz aufwändiger
 
S

SolarLaser

Gast
Welche IP willst du denn ausgeben?

Deine eigene IP solltest du so erhalten:

Java:
InetAddress inet = InetAddress.getLocalHost(); 
System.out.println( inet.getHostAddress() );

Danke für die Antworten. NetworkInterface müsste ich mal ansehen, wobei die Klasse Socket usw. vieles schon haben könnte.

Zum oberen Code, bringt der compiler ein Ausnahmefehler:
Java:
CheckSocket.java:9: error: unreported exception UnknownHostException; must be ca
ught or declared to be thrown
 InetAddress inet = InetAddress.getLocalHost();
                                            ^
1 error

Wobei ein try/catch-Block auch nicht funktioniert, aber müsste irgendein logischer Fehler sein ?

Vielen Dank
S.
 

TKausL

Top Contributor
Zum oberen Code, bringt der compiler ein Ausnahmefehler:
Java:
CheckSocket.java:9: error: unreported exception UnknownHostException; must be ca
ught or declared to be thrown
 InetAddress inet = InetAddress.getLocalHost();
                                            ^
1 error

Wobei ein try/catch-Block auch nicht funktioniert

Glaube ich dir nicht. Zeig mal wie du es versuchst.
 
S

SolarLaser

Gast
Glaube ich dir nicht. Zeig mal wie du es versuchst.

Hier:
Java:
import java.net.InetAddress;

public class CheckSocket {
 public static void main(String[] args) {
  new CheckSocket().los();
 }
 try {
  InetAddress inet = InetAddress.getLocalHost(); 
 
  public void los() {
   System.out.println( inet.getHostAddress() );
  }
 } catch(UnknownHostException u) {}
}

Müsste auch mi [c]IOException[/c] funktionieren ?

Danke
S.
 
M

Marcinek

Gast
Irre ich mich, oder ist das außerhalb der Methode implementiert?
Das geht so nicht.
 
S

SolarLaser

Gast
Ausserhalb der main() oder los() ?

Habes in der los ausprobiert, hier:

Java:
import java.net.Socket;
import java.net.InetAddress;
import java.io.IOException;
import java.net.UnknownHostException;

public class CheckSocket {
 public static void main(String[] args) {
  new CheckSocket().los();
 }
 InetAddress inet = InetAddress.getLocalHost(); 
 
 public void los() {
  try{
  System.out.println( inet.getHostAddress() );
  } catch(UnknowHostException u) {}
 }
}

Fehler:
Java:
CheckSocket.java:15: error: cannot find symbol
  } catch(UnknowHostException u) {}
          ^
  symbol:   class UnknowHostException
  location: class CheckSocket
1 error

Wobei auch, vor und in der main() einen try/catch gesetzt, aber auch mit Fehlermeldung.

Danke
S.
 
M

Marcinek

Gast
Kann man das nicht ergoogeln??

Da fehlt ein n

TrY catch außerhalb von Methoden habe ich noch nie gesehen. Vielleicht kommt daher der Fehler.
 
S

SolarLaser

Gast
Das ist richtig, da fehlte dieses "n", ein Tippfehler der der englischen Aussprache folgte.

Frage an den Profi, kommt das beim Programmieren oft vor, das man zuviel oder wenig Buchstaben(nicht Zahlen!) setzt ?

Try/catch hab ich in die auszurufende Methode gesetzt. Habe länger nicht mit Exception gearbeitet, obwohl ma die immer mit einberechnen müsste.

Jetzt funktionierts.

Vielen Dank und einen schönen Abend
S.
 
T

tröööt

Gast
@TO
ich frag noch mal : welche IP solls denn bitte sein ? LAN-ip des NIC ? public-WAN-IP des routers ? irgendwas virtuelles ? loopback ?

und wie gesagt : mit Socket wirst du nur weiterkommen wenn du diesen auch an irgendwas verbindest ... ansonsten wirst du dort IMMER 0.0.0.0 bekommen ...
 
S

SolarLaser

Gast
Es sollte die Lan-Ip des Hostcomputer ausgeben.

Das mit den anderen Adressen werde ich mir mal anschauen, momentan brauche ich diese anderen Adressen nicht.

Dieser Schreibfehler, war leicht, hab in einfach nicht gesehen(anderes vermutet), erst als ich ein Beispielcode der gleich war, im Internet sah, wurde ich drauf aufmerksam. Erinnere mich das dies vor einiger Zeit schon mal vorkam, nur hab ich dort anhand der Fehlermeldung "cannot find Symbol" die Rechtschreibung kontrolliert und den Fehler beseitigt.

Als Editor benutze ich Notepad ohne irgendwelche Funktionen und Zeilennummern, da ich noch am lernen bin. Aber werde jedenfalls mal eine IDE benutzen.

Schönen Tag
S.
 
T

tröööt

Gast
wenn du die IP des NIC haben willst solltest du lieber mit [japi]NetworkInterface[/japi] arbeiten ...
mit Socket und dessen methoden würde es auch gehen ... allerdings musst du den socket dann vorher auch mit irgendwas verbinden ... also z.b. [c]new Socket("google.de", 80);[/c] ...
 

Ähnliche Java Themen

Neue Themen


Oben