![]() |
ServerSocket + NT Service ???
Moin,
ich habe eine Client/Server Anwendung. Sie funktioniert auch wunderbar. Jetzt möchte ich aber den Server als Dienst laufen lassen. Ich habe mir einen Dienst erstellt mit allen notwendigen Eigenschaften wie in der Anwendung. Leider wird jetzt die Verbindung nicht aufgebaut und ich verstehe nicht warum. Ich hoffe ihr wisst Rat. Mein Service für den Server:
Delphi-Quellcode:
Meine Client Unit:
unit uMain;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs, ExtCtrls, ScktComp; type TKECServerMonitoring = class(TService) Timer: TTimer; procedure ServiceExecute(Sender: TService); procedure ServiceAfterInstall(Sender: TService); procedure ServiceBeforeUninstall(Sender: TService); procedure ServiceCreate(Sender: TObject); procedure ServiceStart(Sender: TService; var Started: Boolean); procedure ServiceStop(Sender: TService; var Stopped: Boolean); procedure TimerTimer(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } Client: TClientSocket; Server: TServerSocket; function GetServiceController: TServiceController; override; end; var KECServerMonitoring: TKECServerMonitoring; implementation {$R *.DFM} {##############################################################################} {###################### ################################} {###################### Main Program ################################} {###################### ################################} {##############################################################################} procedure ServiceController(CtrlCode: DWord); stdcall; begin KECServerMonitoring.Controller(CtrlCode); end; function TKECServerMonitoring.GetServiceController: TServiceController; begin Result := ServiceController; end; procedure TKECServerMonitoring.ServiceAfterInstall(Sender: TService); begin // end; procedure TKECServerMonitoring.ServiceBeforeUninstall(Sender: TService); begin Server.Active := FALSE; end; procedure TKECServerMonitoring.ServiceCreate(Sender: TObject); begin //Initialisierung des Objekts (ältere Delphi-Versionen) Server := TServerSocket.Create(Self); // Initial Server Verbindung damit der Client Verbindung aufnehmen kann Server.Port := 29979; Server.Active := TRUE; end; procedure TKECServerMonitoring.ServiceStart(Sender: TService; var Started: Boolean); begin Timer.Enabled := TRUE; end; procedure TKECServerMonitoring.ServiceExecute(Sender: TService); begin while not Terminated do begin ServiceThread.ProcessRequests(TRUE); // CPU Last ist damit nicht 100% end; end; procedure TKECServerMonitoring.ServiceStop(Sender: TService; var Stopped: Boolean); begin Timer.Enabled := FALSE; end; procedure TKECServerMonitoring.TimerTimer(Sender: TObject); begin if Server.Active = FALSE then begin Server.Port := 29979; Server.Active := TRUE; end; end; end.
Delphi-Quellcode:
...
procedure Tfrm_main.FormCreate(Sender: TObject); begin //Initialisierung des Objekts (ältere Delphi-Versionen) Client := TClientSocket.Create(Self); Client.OnError := ClientError; Client.OnConnect := ClientConnect; end; procedure Tfrm_main.sbtn_connectClick(Sender: TObject); begin if edt_server.Text <> '' then begin try Client.Port := 29979; // Remote Computer mit dem die Verbindung aufgebaut werden soll Client.Host:= edt_server.Text; Client.Open; except //Im Fehlerfall wieder freigeben (ältere Versionen) Client.Free; end; end else MessageDlg('IP / Name des Remote Computer eingeben.',mtInformation,[mbOK],0); end; procedure Tfrm_main.ClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin Memo.Lines.Add(FormatDateTime('hh:mm:ss',now) + ' : Verbunden mit '+edt_server.Text); end; procedure Tfrm_main.ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin if ErrorCode > 0 then begin Client.Close; Memo.Lines.Add(FormatDateTime('hh:mm:ss',now) + ' : Verbindung mit '+edt_server.Text + ' fehlgeschlagen'); ErrorCode := 0; end; end; ... |
Re: ServerSocket + NT Service ???
Hat sich erledigt. Irgendetwas war da faul. Jetzt klappt es.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:10 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