Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Neuen Beitrag zur Code-Library hinzufügen (https://www.delphipraxis.net/33-neuen-beitrag-zur-code-library-hinzufuegen/)
-   -   Delphi Indy-Server OnConnect Problem (https://www.delphipraxis.net/192777-indy-server-onconnect-problem.html)

Benni0811 18. Mai 2017 12:45

Indy-Server OnConnect Problem
 
Hi,

ich habe ein Problem mit meinem IndyTcpServer. Sobald sich ein Client mit dem Server verbindet, wird nicht nur das OnConnect-Event ausgelöst, sondern auch das OnExecute-Event. In meinem Fall führt das zu einer Zugriffsverletzung, da im OnExecute-Event nur das Empfangen und Versenden von Nachrichten behandelt wird. Wie kann man dieses Problem lösen?

mjustin 18. Mai 2017 12:52

AW: Indy-Server OnConnect Problem
 
Wo tritt die Exception denn auf, in OnConnect oder in OnExecute? OnExecute wird immer wieder aufgerufen (in einer Schleife) solange eine Verbindung besteht, OnConnect normalerweise vorher und nur einmal je Connection.

Etwas Quellcode wäre hilfreich.

:glaskugel:

Benni0811 23. Mai 2017 06:32

AW: Indy-Server OnConnect Problem
 
Problem gelößt, lag an meinem Code im Connect-Event.

Nur so aus Interresse: Wird das OnExecute-Event nur dann ausgelöst wenn ein verbundener Client sich rührt oder immer nach einer bestimmten Zeit solange eine Verbindung besteht?

Der schöne Günther 23. Mai 2017 06:52

AW: Indy-Server OnConnect Problem
 
http://www.indyproject.org/docsite/h...OnExecute.html

Zitat:

OnExecute is a TIdServerThreadEvents event handler used to execute the task for a client connection to the server. OnExecute is signalled when the Scheduler executes the thread or fiber associated with the client connection.

[...]

When the thread or fiber is running, the OnExecute event handler is triggered inside a loop that continues to execute the event handler until the client is disconnected. This allows the OnExecute event handler procedure to be written in a straight-forward manner, and still yield to the Scheduler for the server.

Hätte ich jetzt auch anders erwartet...

mjustin 23. Mai 2017 07:42

AW: Indy-Server OnConnect Problem
 
Zitat:

Zitat von Benni0811 (Beitrag 1372472)
Nur so aus Interresse: Wird das OnExecute-Event nur dann ausgelöst wenn ein verbundener Client sich rührt oder immer nach einer bestimmten Zeit solange eine Verbindung besteht?

Der Indy TCP Server macht im Grunde nur etwas in dieser Art:
Code:
while Client.IsConnected do
   OnExecute(Client.Context);
Ob man in OnExecute nur Daten vom Socket liest, oder nur Daten in den Socket an den Client sendet (oder beides) ist freigestellt.
Nur eine leeres OnExecute sollte man vermeiden ;)

Konkretes Beispiel Server-Push:

https://mikejustin.wordpress.com/201...-push-example/


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