Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Service mit TCP-Server (https://www.delphipraxis.net/116926-service-mit-tcp-server.html)

Mr_G 8. Jul 2008 19:02


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:
repeat
    if not SvcPaused then
    begin
    end;
  until SvcStopped;
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.
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

Dax 8. Jul 2008 19:04

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.

Mr_G 8. Jul 2008 19:22

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...

Mr_G 9. Jul 2008 13:19

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