Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy10 Server OnDisconnect: wie Event synchronisiert werfen (https://www.delphipraxis.net/72948-indy10-server-ondisconnect-wie-event-synchronisiert-werfen.html)

McMorton 9. Jul 2006 22:38


Indy10 Server OnDisconnect: wie Event synchronisiert werfen
 
Hi.

Ich habe folgende Frage zum TCPServer von Indy 10:

Wenn ein Client die Verbindung beendet wird ja vom Indy Server das OnDisconenct Event geworfen.
In diesem Event erhält man als Übergabewert die TidContext Klasse. In der steht ja welcher Client sich beendet hat (die Portnummer).


Wie kann ich meinem Programm nun mitteilen welcher Client sich beendet hat?


Im Eventhandeler des OnDisconenct Events muss ich das Event an eine andere Unit (Klasse) weiterreichen.

Diesem Event möchte ich nun die Portnummer des Clients mitgeben.
Aber da das OnDisconnect-Event bei Indy aus einem Thread geworfen wird kann ich das Event nur synchronisiert werfen (kann also keine Werte mitgeben).

Nun könnte ich die Portnummer ja einfach in einer Klassenvariablen speichern, über die Klasse von Indy (TIdNotify) synchronisert eine Hilfsmethode aufrufen, und in der dann das Event an die andere Unit werfen (und die Portnummer mitgeben).

Funktioniert soweit auch, aber: wenn sich viele Clients auf einmal beenden kann ich die OnDisconenct Events nicht so schnell abarbeiten.
Die Klassenvarialbe würde also überschrieben bevor ich mit ihr arbeiten kann.

Gibt es da eine vernünftige Lösung?

Peter Wolf 10. Jul 2006 07:03

Re: Indy10 Server OnDisconnect: wie Event synchronisiert wer
 
Hallo McMorton,

dann speichere doch in einem Array of TIdContext, dann wird nichts ungewollt überschrieben, oder meinst Du etwas anderes?


Grüße
Peter

McMorton 10. Jul 2006 07:13

Re: Indy10 Server OnDisconnect: wie Event synchronisiert wer
 
Hi.
Danke erstmal für die Antwort.

TidContext bekomme ich ja von Indy. Dort kann ich nichts speichern. Ich kann dort nur den Port lesen.


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