Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy TCP Client/Server: spontan Nachricht an den Server senden? (https://www.delphipraxis.net/175252-indy-tcp-client-server-spontan-nachricht-den-server-senden.html)

Medium 10. Jun 2013 13:02

AW: Indy TCP Client/Server: spontan Nachricht an den Server senden?
 
Wenn mich nicht alles täuscht, dann ist ein Socket immer nur in dem Thread verwendbar, in dem er erzeugt wurde. Unabhängig davon, ob man seine eigenen Datenstrukturen threadsicher hat oder nicht. Deshalb habe ich bei meinen Programmen meist eine Art "Dispatch-Thread" der den Socket hält, und an Queues der Worker-Threads eingehende Kommunikation verteilt, sowie ausgehende in einer eigenen Queue verwaltet.

Ich hatte zwar nicht Indy benutzt sondern die alten TClient- bzw. TServerSocket Kompos, aber imho dürfte man auch bei Indy auf die Nase fallen, wenn man einen Socket aus mehreren Threads heraus direkt benutzt. Ich bin halt nicht 100% sicher, aber das wäre überprüfungswürdig bevor man viel Zeit in ein Design steckt, dass am Ende doch nicht gehen könnte.

mjustin 10. Jun 2013 13:26

AW: Indy TCP Client/Server: spontan Nachricht an den Server senden?
 
Zitat:

Zitat von romber (Beitrag 1218033)
Wäre das so threadsicher oder habe ich was vergessen?

Muss ich in beiden Threads aud IOHandler zugreifen oder kann ich irgendwie direkt auf Lese- bzw. Schreibstrem zugreifen?

Ja, das klingt überschaubar. Direkten Streamzugriff über Indy habe ich noch nicht versucht, es kommt aber nur darauf an ob der Socket "sichtbar" (und nicht z.B. 'private') ist.

Ich habe zwar Remy Lebeau so verstanden dass es im Prinzip gehen muss, aber bei Threads gilt "The proof of the pudding is in the eating" :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:15 Uhr.
Seite 2 von 2     12   

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