Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Dienst und Indy TCPServer (Version 9) (https://www.delphipraxis.net/114398-dienst-und-indy-tcpserver-version-9-a.html)

Die Muhkuh 24. Mai 2008 16:39


Dienst und Indy TCPServer (Version 9)
 
Hi,

wie in einem anderen Thread schon geschrieben, hab ich einen Dienst mit TCPServer.

Jetzt ist ja die Sache, dass im OnExecute eine Endlosschleife sein muss, damit der Dienst sich nicht beendet. Jedoch mag ich gerade das Wort Endlosschleife nicht, da ich nicht weiß, wie sich das auf meinen TCPServer verhält.

Der Dienst macht nichts anderes, außer einen TCPServer zu erstellen, welcher Verbindungen entgegennimmt und ggf. mit einer Datenbank kommuniziert.

Durch die Endlosschleife könnte der Server blockiert werden, dass der keine Connections mitbekommt. Das heißt, ich müsste den Server in einen eigenen Thread auslagern.

Bevor ich mir nun aber die Arbeit mache, wollte ich wissen, ob ich damit richtig liege. Vielleicht hat ja jemand in dieser Sache schon Erfahrung gesammelt und mag diese mit mir teilen.

Grüße

Apollonius 24. Mai 2008 16:42

Re: Dienst und Indy TCPServer (Version 9)
 
Ziehe den Server einfach auf den Service, erledige Initialisierung im OnStart-Ereignis und verwende kein OnExecute. Dann betreibt der Service-Thread eine ganz normale Nachrichtenschleife.
Ansonsten ist das Äquivalent zu Application.ProcessMessages ServiceThread.ProcessRequests(false).

Die Muhkuh 24. Mai 2008 16:45

Re: Dienst und Indy TCPServer (Version 9)
 
Hi Philip,

was meinst Du mit ziehe den Thread auf den Service? Welchen Thread meinst Du? Den des TIdTCPServers? Ein eigener? Was ganz anderes?

Ich hatte bisher noch keinen eigenen Dienst geschrieben, weswegen ein bisschen ausführlicher beschrieben nett wäre. :)

Apollonius 24. Mai 2008 19:58

Re: Dienst und Indy TCPServer (Version 9)
 
Tut mir leid, das war natürlich Murks. Ich meinte den Server. Dann sollte eigentlich alles wie gewohnt funktionieren, solange du OnExecute leer lässt.

Die Muhkuh 24. Mai 2008 19:59

Re: Dienst und Indy TCPServer (Version 9)
 
Ich bin nur grad am überlegen, was Du damit meinst "Ziehe den Server in OnStart". Steh grad total auf dem Schlauch. :-?

Apollonius 24. Mai 2008 20:02

Re: Dienst und Indy TCPServer (Version 9)
 
Ich meine einfach zur Design-Zeit in der Formularansichtauf auf den Service ziehen. Das ist ja das tolle an nicht-visuellen Komponenten - man kann sie nicht nur auf Erben von TForm, sondern auch auf Erben von TDataModule ziehen.
Falls dann irgendeine Initialisierung ansteht, kannst du sie im OnStart durchführen.

Die Muhkuh 24. Mai 2008 20:07

Re: Dienst und Indy TCPServer (Version 9)
 
Schau mal ganz vorsichtig, welche Delphi-Version ich hab. :zwinker:

Apollonius 24. Mai 2008 20:10

Re: Dienst und Indy TCPServer (Version 9)
 
Hm, die Indys zicken mal wieder rum. Dann kannst du im Service einfach ein privates Feld deklarieren und den Server im OnCreate instanzieren und im OnDestroy wieder freigeben.

Die Muhkuh 24. Mai 2008 21:52

Re: Dienst und Indy TCPServer (Version 9)
 
So, nach ein bisschen Chat-Gebrabbel, war die Lösung doch ganz einfach. Ich hab den Service ja immer in der IDE gestartet, weshalb er ja immer beendet wurde.

Hab ich den Service installiert und gestartet, lief er ohne Probleme.

Heute ist das Brett vor meinem Kopf wohl zu groß. :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:58 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