Service mit TCP-Server
Hallo zusammen,
nachdem ich mich entschlossen habe mein Projekt ohne die VCL-Unterstützung zu realisieren stehe ich nun (wie zu erwarten war) vor einem Problem. Ich möchte gerne einen TCP Server in meinem Service unterbringen und weiß nicht so wirklich wie ich das anstellen soll. Ich habe das Beispiel von Assarbad durchgearbeitet und mir einen Service nach meinen Wünschen zusammengebastelt. Doch die Schleife in der ServiceMain Procedure vergeudet leider nur (wie zu erwarten...) 99% der Rechenzeit:
Delphi-Quellcode:
Leider geht hier auch das Beispiel der MSDN nicht weiter... anstatt die CPU zu blockieren warten die mit WaitForSingleObject auf ein Event, welches Sie im ControlHandler auslösen falls der Service beendet wird.
repeat
if not SvcPaused then begin end; until SvcStopped; Vor ewigen Zeiten habe ich mal einen TCP-Server in ein Konsolenprogramm gepackt (auch nach irgendeinem Tutorial...) und damit ein wenig rumgespielt. Ich musste dabei nichts weiter tun als die Komponente zu erzeugen und dafür zu sorgen, dass das Programm offen bleibt. Dazu hab ich einfach auf die nächste Eingabe in der Konsole gewartet. So nun habe ich mir gedacht bei meinem Service könnte es doch vielleicht auch so laufen: Ich erzeuge bei Initialisieren die Komponente und sorge einfach dafür, dass der Service "offen bleibt". Nur wie mache ich das? die Endlosschleife ist ja nunmal kein probates mittel und mit dem Eventkram dürfte mein Service ja bei WaitForSingleObject steckenbleiben, oder? Die Frage ist nun wie bekomm ich meinen TCP-Server in dem Service unter? Gruß Mr_G |
Re: Service mit TCP-Server
Schnapp' dir das MSDN-Beispiel und lagere alle Server-Sachen in einen Thread aus - dann läuft der Server selbst weiter, wenn der Hauptthread des Services blockiert.
|
Re: Service mit TCP-Server
Wie bekomme ich denn den Server dazu in dem entsprechenden Thread zu laufen?
Mit einfach erzeugen und das "OnExecute" setzen ist es ja wohl nicht getan... |
Re: Service mit TCP-Server
In diesem Post ist quasi das gleiche Problem beschrieben. Der Unterschied ist der, dass hier mit der VCL gearbeitet wird.
Nach einem Chat habe ich aber Erfahren, dass das mit den Indys wohl auch nichts gegeben hat. Falls da nun keiner Erfahrungen hat oder mir jemand begründet von den Indys abraten kann, würde ich einfach mal mit der WinAPI arbeiten. Hab da ein super Tutorial gefunden... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz