# IP-Adressen und Hostnamen zuordnern bei TCP/IP (hosts setzen)



## Nud3l (10. Sep 2009)

Hi

Ich entwickele zur zeit ein Eclipse pugin das via TCP/IP eine Verbindung aufbaut. 

Nun habe ich das Problem das sich die IP-Adresse aber besonders der Hostnamen sich verändert so das ich sie nicht einfach unter C:\WINDOWS\system32\drivers\etc in hosts die zu Ordnung ein tragen kann.

Wenn keine Zuordnung in der Datei stehen, habe ich bei jeder unbekannten Zuordnung einen timeout von 10sec. Das ist total inakzeptabel besonders wenn ich Verbindung zu mehren aufbaue. So kann es passieren das man mal 1min warten muss bis die Verbindung steht.

Jetzt meine Frage:
Gibt es eine Möglichkeit während der runtime die Sachen irgendwie Java Mitzuteilen? oder muss ich irgendwie versuchen die hosts Datei zu öffnen und die IP-Adressen mit Hostnamen eintragen? und dann wieder später zu löschen

Bei Programmabbruch würden dann zum Beispiel die Daten nicht gelöscht werden und die Datei wird immer größer. hat einer eine Idee was man da machen kann?


----------



## tuxedo (10. Sep 2009)

Die Hosts-Datei ist nur für die Namensauflösung nützlich. 

Wenn du immer wieder einen anderen Hostnamen benutzen musst, und dieser vom DNS nicht korrekt aufgelöst wird, und sich zusätzlich noch die IP dahinter auch ändern kann: Ich denke in dem Fall bist du aufgeschmissen.

Wenn sich nur der Hostname ändert, aber die IP gleich bleibt: 
Entweder die Namensauflösung "reparieren" oder die IP statt Hostname benutzen.

- Alex


----------



## Nud3l (10. Sep 2009)

Also ich habe eine Verbindung zu einer IP die sehr viele verschiedene Hostname haben..

Wobei die IP Adresse nicht fest ist und die Anzahl der Hostnamen ist auch variable..

da beleibt mir wohl nur das ändern der Datei. wobei man da wohl den Pfad selber angeben sollte von wegen System Abhängigkeit. Das Löschen in der Datei kann man mit nen Kommentar ja lösen mit Startreihe und Endreihe.


----------



## tuxedo (10. Sep 2009)

Kannst du mir mal den Use-Case dafür erklären? Sieht mir bis jetzt eher nach einen Design-Fehler oder so aus.

Wenn du EINE Verbindung hast, dann hast du das Problem mit der Namensauflösung für diese Verbindung nur 1x.

Wieso wechselt denn der Hostname ständig? Ich kenne nur ein Szenario wo sich Hostname UND IP ändert, und das sind die Hostnamen und IP-Adresse die man beim sich einwählen ins Netz von seinem Provider bekommt. Aber sowas lässt sich ja mit DynDNS.com lösen.


----------



## Spacerat (10. Sep 2009)

tuxedo hat gesagt.:


> Kannst du mir mal den Use-Case dafür erklären? Sieht mir bis jetzt eher nach einen Design-Fehler oder so aus.
> 
> Wenn du EINE Verbindung hast, dann hast du das Problem mit der Namensauflösung für diese Verbindung nur 1x.
> 
> Wieso wechselt denn der Hostname ständig? Ich kenne nur ein Szenario wo sich Hostname UND IP ändert, und das sind die Hostnamen und IP-Adresse die man beim sich einwählen ins Netz von seinem Provider bekommt. Aber sowas lässt sich ja mit DynDNS.com lösen.


Ein Use-Case dafür... Ich z.B. warte diverse Projekte offline in einer Apache-Umgebung (XAMPP). Damit die einzelnen Projekte über eine eigene Domain, statt ein Unterverzeichnis in htdocs erreichbar sind verwende ich virtuelle NamedHosts. Um dieses lokal zu realisieren, genügt es, die Hostnamen als Aliase in der Hosts-Datei einzutragen. Das hätte ich gerne automatisiert und habe deswegen selbiges Problem wie der TS. Allerdings ändern sich bei mir die IP-Adressen nicht mehr, seit dem ich DHCP abgeschaltet habe.


----------



## TheTobi (10. Sep 2009)

hmm ein Problem was ich häufiger schon gehört habe, kaum schaltet man DHCP ab, ändern sich die IP-Adressen nicht mehr......man muss sie anscheinend dann händisch also manuell eintragen, was IP-Adressen mit DHCP zu tun haben soll, weiss ich beim besten willen nicht.

sry für OT


----------



## maki (10. Sep 2009)

DHCP und IP Addressen?

Vielleicht hab ich was missverstanden hier im Thread(Ironie?), also nur so nebenbei: DHCP sorgt u.a. dafür das IP Addressen dynamisch sind, sich also ändern sobald der sog. Lease ausgelaufen ist.
Mit einer statischen IP (wie der Name schon sagt) ändert sich die IP nicht mehr dynamisch.

Auch sorry für OT


----------



## Nud3l (11. Sep 2009)

Mein Use Case...

Ich habe eine Simulation von mehren Servern gebastelt die sich alle bei einen Client an melden, der dann die Server verwaltet. Der Verbindungsaufbau ist dann eben über eine fest definierte Schnittstelle an der ich nichts verändern darf. 



> Wenn du EINE Verbindung hast, dann hast du das Problem mit der Namensauflösung für diese Verbindung nur 1x.



Ja das stimmt schon nur habe ich mal mehr als 10 Server in der Simulation wird beim starten 10 mal bis Timeout gewartet also insgesamt 100sec und das ist ein bissel heftig.


----------



## FatFire (11. Sep 2009)

Nur um einige IP-Adressen statisch zu haben, sollte man allerdings nicht DHCP abschalten. Besser bestimmten MAC-Adressen im DHCP-Server IP-Adressen fix zuordnen. Allerdings hat in meinen Augen der Admin einen Schuss, wenn sich sowohl Hostname als auch IP eines Servers ständig ändern. Wie will man denn sonst fix auf eine Maschine zugreifen?!?

@Spacerat: Es fällt mir auch keine Möglichkeit ein, das mit den virtuellen Hosts vernünftig zu automatisieren. Alle Verzeichnisse in htdocs als Host anlegen? Dann hätte auch jeder image-Ordner oder sonstiges dort einen eigenen Domainnamen. Also ein bißchen Handarbeit ist da immer angesagt.

Gruß FatFire

Edit:


> Ich habe eine Simulation von mehren Servern gebastelt die sich alle bei einen Client an melden, der dann die Server verwaltet.


Sehr unglücklich ausgedrückt, weil ein Server sich never ever bei einem Client anmeldet (ist so definiert, die Verbindung wird immer vom Client eingeleitet). In Deinem Fall schlüpfen die Server also in eine Clientrolle.


> Ja das stimmt schon nur habe ich mal mehr als 10 Server in der Simulation wird beim starten 10 mal bis Timeout gewartet also insgesamt 100sec und das ist ein bissel heftig.


Zwei Möglichkeiten: Da die Server von Deinem (ich sag jetzt mal) Masterserver, dem großen Verwalter, verwaltet werden sollen, müssen die sich also auch bei dem anmelden, nicht umgekehrt.
Wenn Du das nicht so haben willst, kannst Du doch auch 10 Server gleichzeitig fragen: Thread aufmachen für jeden Server, und die, die erreichbar waren, in eine Liste eintragen. Sind die Threads alle abgearbeitet, ist die Liste der online verfügbaren Server komplett und im Idealfall dauert das für alle zehn nur noch 10s.

Gruß FatFire


----------



## Nud3l (11. Sep 2009)

FatFire hat gesagt.:


> Sehr unglücklich ausgedrückt, weil ein Server sich never ever bei einem Client anmeldet (ist so definiert, die Verbindung wird immer vom Client eingeleitet). In Deinem Fall schlüpfen die Server also in eine Clientrolle.


Ich habe mich wohl ein bisschen zu Ungenau ausgedrückt hier mal einen etwas genauer Beschreibung:
Naja an den Aufbau kann ich ebne nichts rütteln, das ist durch ein Standard festgelegt. Bei mir sind jetzt die ganzen Server Feldgeräte die sich normal weit verteilt irgendwo im Feld zu finden sind, Nur sind sie in der Simulation auf meinen Rechner Abgebildet. Und der eine Client ist die Zentrale die die Steuerung der Feldgeräte übernimmt. Nur hat jeder Server auch einen Client und eben jeder Client einen kleinen Server. Der "Server" kann über diese Verbindung eben den Client mitteilen das er einen Störung hat. darauf hin holt der "Client" vom Server die Störungsmeldung ab.



FatFire hat gesagt.:


> Zwei Möglichkeiten: Da die Server von Deinem (ich sag jetzt mal) Masterserver, dem großen Verwalter, verwaltet werden sollen, müssen die sich also auch bei dem anmelden, nicht umgekehrt.
> Wenn Du das nicht so haben willst, kannst Du doch auch 10 Server gleichzeitig fragen: Thread aufmachen für jeden Server, und die, die erreichbar waren, in eine Liste eintragen. Sind die Threads alle abgearbeitet, ist die Liste der online verfügbaren Server komplett und im Idealfall dauert das für alle zehn nur noch 10s.
> 
> Gruß FatFire



Das wäre in meinen Augen schon mal eine annehmbare Lösung der Start wird ja nicht immer wieder aufgerufen. Nur wird dadurch meine Funktionalität beeinträchtige ich muss schon die Namensauflösung eintragen denn sonst kann ich eben keine events senden.


----------



## Spacerat (11. Sep 2009)

FatFire hat gesagt.:


> Nur um einige IP-Adressen statisch zu haben, sollte man allerdings nicht DHCP abschalten. Besser bestimmten MAC-Adressen im DHCP-Server IP-Adressen fix zuordnen.


So hab' ich es ja eigentlich auch gemacht. War blos zu schreibfaul, um es so hinzuschreiben





FatFire hat gesagt.:


> Alle Verzeichnisse in htdocs als Host anlegen?


Neee... dann wäre ja jeder Host auch über die Verzeichnisstruktur von localhost erreichbar (ohne spezielle Sicherung, z.B durch .htaccess). Jeder Host hat natürlich sein eigenes "htdocs"-Verzeichnis.
@TS: Das hört sich iwie nach einer Profinet-DP-Vernetzung an (Oder überhaupt Feldbus-Vernetzung über TCP/IP). Bei deinen "Client-Server"-Geräten könnte es sich um Intelligente Peripherie (SPS-CPU) handeln.


----------



## Nud3l (14. Sep 2009)

So habe es jetzt gelöst in dem ich die Datei ändere. 

Nur muss jetzt der jeweilige User den Pfad der hosts-Datei einmalig angeben, damit das Prog Plattform unabhängig bleibt.

@Spacerat das sind kleine Linux Systeme auf nen kleinen Pentium Prozessor. Einsatzgebiet sind dafür Ampelanlagen die eine zentrale Steuerung haben.


----------

