Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   [IntraWeb] Port dynamisch einstellen (https://www.delphipraxis.net/156799-%5Bintraweb%5D-port-dynamisch-einstellen.html)

pustekuchen 15. Dez 2010 11:43

[IntraWeb] Port dynamisch einstellen
 
Guten Tag,

ich bins mal wieder ;)
Ich möchte gerne von meinem IntraWeb Dienst/Server den Port dynamisch einstellen.
Mir sind 2 Wege eingefallen.
  1. Den Dienst/Server mit Parametern starten und den Port beim starten festlegen.
  2. Oder zur Laufzeit den Port ändern.
Zu 2.:
Den Port kann man einfach im ServerController.Port ändern. Doch es zeigt keine Wirkung, ich denke der Server muss restartet oder reaktivert werden. Doch leider hab ich dazu nichts gefunden.

Wie könnte man diese beiden möglichkeiten realisieren?

Gruß
pustekuchen

pustekuchen 15. Dez 2010 13:08

AW: [IntraWeb] Port dynamisch einstellen
 
Soo,

hab das mit den Parametern teilweise hinbekommen.
Hab im OnCreate des ServerControllers folgendes geschrieben.
Delphi-Quellcode:
if ParamCount > 0 then
  begin
    if ParamStr(1) = '-port' then
    begin
      IWServerController.Port := StrToInt(ParamStr(2));
    end;
  end;
Dies klappt auch wenn ich mein Server als .exe starte und die parameter hinzufüge.
Doch wenn ich das ganze als Dienst laufen lasse, klappt es nicht mehr.
Ich habe versucht in den Eigenschaften des Dienstes die Parameter zu setzten, doch leider ohne erfolg.
Wodran könnte es liegen?

shmia 15. Dez 2010 16:07

AW: [IntraWeb] Port dynamisch einstellen
 
Nicht auf die Funktionen ParamCount und ParamStr zugreifen, sondern auf die Properties [TService].ParamCount und [TService].Param.

pustekuchen 15. Dez 2010 16:20

AW: [IntraWeb] Port dynamisch einstellen
 
Mhh hört sich eigentlcih gut an, nur leider hab ich mit IntraWeb keinen Zugriff auf TService.

Es wird lediglich IWInitService eingebunden und dann IWRun aus IWInitService aufgerufen.

egentur 28. Mär 2011 23:17

AW: [IntraWeb] Port dynamisch einstellen
 
Hallo
ich hab das über ein IniFile gelöst.

Im Servercontroller beim ControllerBaseCreate

procedure TIWServerController.IWServerControllerBaseCreate(S ender: TObject);
begin
inherited;
Port := AppIniFile.ReadInteger('Port',8888);
CacheDir := AppPath+'Temp\';
CacheExpiry := AppIniFile.ReadInteger('CacheExpiry',480);
end;

AppIniFile ist hierbei eine Komponente
vom Typ TJvAppIniFileStorage aus den JEDI Bibliotheken
aber jedes normale INI File sollte funktionieren.
Auf diese Weise kann man alle möglichen Properties des ServerControllers beim Start einstellen. s.o.

Ich kompilieren meine Anwendung immer gleichzeitig als Standalone und als Service.
Als Standalone mach ich die Settings (Port, CacheExpiry etc) und schreibe das IniFile,
der Service liest dieses dann beim Start.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf