![]() |
Indy UDP Server als Dienst
Hallo Zusammen,
ich versuche mich aktuell leider vergeblich an einem Indy UDPServer als Dienst. Die Dienst Struktur und der Dienst selber laufen. Leider empfängt der Server nichts. Wen ich den gleichen Code in einem Programm starte gehts einwandfrei. Leider finde ich kaum info über die Dienstumgebund die dafür vorgesehen werden muss damit der Dienst auch Zugriff auf das Netzwerk bekommt. Hier erst mal der Dienst an sich:
Code:
Der UDP Server liegt auf der Mainform und wird nach "unten" durchgereicht.
var
STARITZzeit: TSTARITZzeit; Log : TStreamWriter; implementation {%CLASSGROUP 'Vcl.Controls.TControl'} {$R *.dfm} procedure ServiceController(CtrlCode: DWord); stdcall; begin STARITZzeit.Controller(CtrlCode); end; function TSTARITZzeit.GetServiceController: TServiceController; begin Result := ServiceController; end; procedure TSTARITZzeit.ServiceContinue(Sender: TService; var Continued: Boolean); begin Continued := True; end; procedure TSTARITZzeit.ServiceStart(Sender: TService; var Started: Boolean); begin Log := TStreamWriter.Create(TFileStream.Create('c:\log\staritz.log', fmCreate or fmShareDenyWrite)); started := ConnectServices(log, Zeit_UDP); end; procedure TSTARITZzeit.Zeit_UDPUDPRead(AThread: TIdUDPListenerThread; const AData: TIdBytes; ABinding: TIdSocketHandle); begin Log.WriteLine('UDP Recive!'); sec_Zeit_UDPUDPRead(Zeit_UDP, XMLZeit, XMLSend, AThread, AData, ABinding); end; end. Hier der Code der Unit:
Code:
Ich schreibe mir in einem Log weg was intern passiert.
var adsC : TAdsConnection;
adsM : TAdsTable; adsT : TAdsTable; function ConnectServices(log: TStreamWriter; Zeit_UDP: TIdUDPServer): Boolean; begin result := FALSE; ... öffne ein paar Datenbänke... // Einmal testen ob der ADS läuft... try ADSC.IsConnected := TRUE; except Log.WriteLine('Dictionary conect failed!'); exit; end; // Datenbänke testen try AdsM.Active := TRUE; except Log.WriteLine('Database Mitar conect failed!'); exit; end; try AdsT.Active := TRUE; except Log.WriteLine('Database TimeTable conect failed!'); exit; end; // Testen ob der UDP-Port geht... try Zeit_UDP.ThreadedEvent := TRUE; Zeit_UDP.Active := TRUE; Except Log.WriteLine('UDP conect failed!'); exit; end; ADSC.IsConnected := FALSE; Log.WriteLine('Staritz aktiv!'); result := TRUE; end; procedure sec_Zeit_UDPUDPRead(Zeit_UDP: TIdUDPServer; XMLZeit: TJvSimpleXML; XMLSend: TJvSimpleXML; AThread: TIdUDPListenerThread; const AData: TIdBytes; ABinding: TIdSocketHandle); var i : integer; sData, sRFID : String; rGoOut, rGoIn, rNotFound : Boolean; tempElement : TJvSimpleXMLElem; begin // Code Empfang und auflösen for i:= 0 to length(AData)-1 do sData := sData + chr(AData[i]); XMLZeit.LoadFromString(sData); try ... Dienst kommt bis zum "Staritz aktiv!" Das heißt der UDP Server arbeitet. Ports usw. habe ich natürlich schon getestet. Aber egal wie ich ihn installiere kommt nichts an. Hat jemand eine Idee? Threadevent ist im Server auf TRUE! Gelesen hatte ich schon das deswegen KEINE weiter OnExecute im Dienst benötigt wird. Für jede Idee wäre ich dankbar! WIN 10 - Delphi XE7 Danke |
AW: Indy UDP Server als Dienst
Mit einem TCP-Server haben wir / hat niemand in einem Dienst grundsätzlich keine Probleme.
UDP weiß ich nicht, aber ich wüsste keinen Grund, warum es da anders sein sollte. [edit] Stimmt, die Firewall muß es natürlich auch erlauben. |
AW: Indy UDP Server als Dienst
Danke,
bin alles nochmal durchgegangen! Habe es gefunden :roll: Das Programm mit dem Server und der Unit lief ja ohne Probleme. Der Dienst nicht. Windows DomänenFirewall aus, dann geht auch der Dienst! Warum Windows auf ein und der selben Maschine zwischen Programm und Dienst einen Unterschied macht erschließt sich mir "noch" nicht... Aber gut! Fehler ist gefunden! VG Stevie |
AW: Indy UDP Server als Dienst
Systemsteuerung\Alle Systemsteuerungselemente\Windows Defender Firewall\Zugelassene Apps
Da deine Applikation hinzufügen, schon werden alle Ports für TCP und UPD durchgelassen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:08 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