![]() |
Indy mit Hostnamen?
Hi,
ich hab in meinem Programm die Indy-Komponenten TCPServer und TCPClient. Beiden muss ich ja die IP und den Port nennen, die sie benutzen sollen. Laut Online-Hilfe kann ich da statt IPs auch Hostnamen verwenden. Wenn ich in der IDE den zu benutzenden Namen fest eingebe, dann funktioniert es auch. Wenn ich das aber zur Laufzeit tun will, bekomm ich den Fehler 'THOR' ist kein gueltiger IntegerWert. Womit er ja schon Recht hat, aber er soll doch den Hostnamen nehmen... :( Hab ich an was wichtiges nicht gedacht? Mat |
Moin Mat,
ist es im Bereich des Möglichen, dass Du versuchst dem Port den Hostnamen zuzuordnen? |
:)
das ist natuerlich im bereich des moeglichen, hab ich aber bereits kontrolliert.. |
Hm, poste mal den Code-Abschnitt, welcher die Probleme bereitet. Ich mache es normalerweise nicht anders...
...:cat:... |
ok, ich hab es jetzt eingrenzen koennen.
ich weise die Eigenschaften folgendermassen zu:
Delphi-Quellcode:
(also nichts spektakulaeres :) )
with Form_Main.idTCPClient do
begin Port := 35864; BoundIP := 'thor'; end; der Fehler kommt dann bei
Delphi-Quellcode:
der TCPServer funktioniert mit IPs oder Hostnamen.. Und wenn ich beim Client den Namen zur Designzeit eintrage, geht's auch nicht... fragt mich nich, was dann gestern los war... :oops:
Form_Main.idTCPClient.Connect(3000);
na jedenfalls beschleicht mich mittlerweile das Gefuehl, das ich bei BoundIP wirklich nur IP-Addressen nehmen kann, zumal ich in der Hilfe zum Client keinen Hinweis auf Hostnamen finde... beim Server aber schon... scheint, da hab ich wohl pech gehabt, oder?! Mat |
Aus der Hilfe geht nicht ganz hervor, ob bei BoundIP Hostnamen oder Adressen verrwendet werden können. Bei Host allerdings geht beides:
Zitat:
|
Moin Zusammen,
also bei mir steht in der Hilfe der Indys zu TidTCPClient.BoundIP als erstes: Zitat:
|
BoundIP ist nicht die des Servers, sondern die des Clients, wenn dieser über mehrere IP-Adressen verfügt. Du must den Eintrag bei HOST setzen, um den Server zu erreichen.
...:cat:... |
jaja, das ist schon richtig, ich muss doch aber sowohl der server- und der client-komponente sagen, was er benutzen soll...
|
Wenn Du die Bound-IP nicht setzt, dann "hört" der Server auf allen verfügbaren IPs. Von daher ist es okay, ansonsten musst Du bei Bound-IP eine gültige IP angeben. Der Name des Rechners ist nicht gleich einer eindeutigen IP.
...:cat:... |
mein programm fragt beim starten, welche IP man hat. Alternativ kann man dort auch den Hostnamen eingeben.
Dann werden die eingegebenen Daten der Server- und der Clientkomponente (ist ja ein programm) zugeordnet. Wenn ich jetzt also nur den Hostnamen vom Anwender bekomme, ist es ja im prinzip egal, welche IP ich benutze, trotzdem will ich doch die Komponenten richtig konfigurieren... daher nun mein Problem... aber warscheinlich muss ich, falls der Hostname angegeben wurde, einfach die IP selbst rausfinden... Mat |
Zitat:
...:cat:... |
ne, das mit der liste der verfuegbaren IPs find ich nicht gut...
die Abfrage soll ja dann gespeichert werden, damit der User nur beim ersten Start mit "Schwierigkeiten" konfrontiert wird :) Und die Hostnamen sind dann fuer Leute, die dynamische IPs verwenden. Auch nicht ganz unwichtig: an die lokale IP komm ich mit der Komponente IPWatch schneller ran, als mit den Codes, die mir alle verfuegbaren IPs anzeigen... die hab ich naemlich nie verstanden... :) Danke fuer eure Hilfe Mat |
Wenn es wirklich einfach sein soll, warum willst Du den Server dann fest auf eine IP binden?
...:cat:... |
ich meinte einfach fuer den benutzer..
das der server nur auf einer IP lauscht, find ich nicht unbedingt wichtig, aber irgendwie "sauberer". wichtig ist mir aber, das der client (wie gesagt, jedes programm ist server und client gleichzeitig) nicht die DSL-Leitung benutzt, wenn er doch mit dem LAN sprechen moechte Mat |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz