# Bestimmt IP Adresse verwenden wenn man mehrere hat



## Weisswurst (17. Nov 2008)

Hi!

Ich muss für ein Problem bei dem die Rechner über eine IP Adresse, die in einem bestimmten Netz liegen muss, identifiziert werden die richtige IP wissen.

Über


```
localIp = java.net.InetAddress.getLocalHost().getHostAddress();
		log.info("Working with local ip: " + localIp);
```

bekomme ich bei manchen Rechnern die Richtige, bei manchen die Falsche.

Die Rechner haben:

IP1: 192.168...
IP2: 141...
evt. noch IP3: 168...

Für mich wäre es wichtig bei jedem Rechner, egal wieviele Adressen er hat, immer die 141er zu verwenden.
Wie könnte ich das hinbekommen?


----------



## tuxedo (17. Nov 2008)

Ich geh mal davon aus, dass du einen ServerSocket aufmachen willst, und diesen dann an die korrekte IP-Adresse binden willst?

Wenn ja, einfach im Konstruktor des Serversockets die richtige IP angeben.

Wenn die 141.x.x.x allerdings eine DHCP-Adresse ist und sich demnäch immer mal wieder ändert, dann sieht's etwas schlechter aus. Dann kannst du aber immernoch alle IP-Adressen ermitteln und schauen welche mit 141 anfängt, und diese dann einfach im Konstruktor benutzen.

Oder du bindest einfach auf 0.0.0.0, dann wird an allen IP Adressen auf eingehende Verbindungen gelauscht.

Du kannst natürlich auch die IP anhand des Hostnamens ermitteln. Allerdings solltest du dann sicherstellen dass "yourHostName" zu der 141er IP Adresse aufgelöst wird. 

Genrell gilt: Server mit dynamischen IP-Adressen ausstatten ist etwas "ungeschickt". Und nur über Hostnamen arbeiten macht einen abhängig vom DNS-Server.

Und wenn man dann noch Windows hat, wo man am Client den Hostnamen angeben kann, und der Hostname beim DHCP-Lookup auch noch im DNS-Server registriert wird, dann ist man auch noch abhängig von Windows und welche IP Windows dem Server nun mitteilt.

- Alex


----------



## Weisswurst (17. Nov 2008)

Neee ich will kein Socket.
Die Rechner um die es mir geht legen auf einem Server einen Ordner mit ihrer IP Adresse an und schmeissen da ein paar Dateien rein.

Der Server guckt dann bei Bedarf in den Ordner und liest die Dateien aus.
Die Rechner sind in einer Datenbank eingetragen wo sie über ihre fixe 141er IP Adresse identifiziert werden.

Der Ordner mit der IP Adresse dient einfach nur als Name um diesesn Rechner zuzuordnen.


----------



## tuxedo (17. Nov 2008)

Na dann muss ich ja trotzdem nix mehr neues schreiben. Entweder alle IP-Adressen die auf dem Rechner existieren nach "141." am Anfang abklappern, oder sicherstellen dass der Hostname zur richtigen IP aufgelöst werden kann.

Wenn die IP's allerdings fix sind, kannst du die Anwendung auch "fix" für diese IP Konfigurieren und das ganze in eine Config/Properties File einpflegen.

Hat aber alles in allem sehr wenig bis gar nix mit Netzwerkprogrammierung zu tun.

- Alex


----------



## Weisswurst (17. Nov 2008)

Ja schon, aber wie ermittel ich alle IP Adressen? Ich bekomme ja immer nur eine.


----------



## tuxedo (17. Nov 2008)

```
for ( InetAddress ia : InetAddress.getAllByName(localHost) ) 
   System.out.println( ia );
```

Hättest du abwr auch selbst drauf kommen können. Die Klasse InetAddress kanntest du ja schon.


----------

