# IP - abfragen ?



## SolarLaser (2. Dez 2012)

Hallo,

Habe ein kleines Problem mit der IP-abfrage ?

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


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

Danke
S.


----------



## Fab1 (2. Dez 2012)

Welche IP willst du denn ausgeben?

Deine eigene IP solltest du so erhalten:


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


----------



## tröööt (2. Dez 2012)

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


----------



## SolarLaser (2. Dez 2012)

Fab1 hat gesagt.:


> Welche IP willst du denn ausgeben?
> 
> Deine eigene IP solltest du so erhalten:
> 
> ...



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:

```
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 (2. Dez 2012)

SolarLaser hat gesagt.:


> Zum oberen Code, bringt der compiler ein Ausnahmefehler:
> 
> ```
> CheckSocket.java:9: error: unreported exception UnknownHostException; must be ca
> ...



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


----------



## SolarLaser (2. Dez 2012)

TKausL hat gesagt.:


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



Hier:

```
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.


----------



## Marcinek (2. Dez 2012)

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


----------



## SolarLaser (2. Dez 2012)

Ausserhalb der main() oder los() ?

Habes in der los ausprobiert, hier:


```
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:

```
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.


----------



## Marcinek (2. Dez 2012)

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.


----------



## SolarLaser (2. Dez 2012)

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.


----------



## TKausL (2. Dez 2012)

SolarLaser hat gesagt.:


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



Kommt vor aber darauf macht einen ja Eclipse bzw. der Compiler drauf aufmerksam.


----------



## Marcinek (2. Dez 2012)

Bei mir kommt das nie vor.


----------



## tröööt (3. Dez 2012)

@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 ...


----------



## SolarLaser (3. Dez 2012)

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.


----------



## tröööt (3. Dez 2012)

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] ...


----------

