![]() |
[Indy] TCPServer.send(...) in 2 Threads gleichzeitig?
Hallo;
kann es bei den Indys ein Problem geben wenn zwei Threads gleichzeitig über dasselbe TCP-Server-Socket oder TCP-Client-Socket senden? Oder regelt Indy das automatisch mit einem kritischen Abschnitt? Wenn nicht, müsste ich wohl eine eigene send-Funktion erstellen... Tubos |
Re: [Indy] TCPServer.send(...) in 2 Threads gleichzeitig?
Wie wärs mit versuchen ? :shock:
|
Re: [Indy] TCPServer.send(...) in 2 Threads gleichzeitig?
Hi,
mir ist da kein Fehler bekannt. Der Server läuft ja sowieso multi-threaded, für jede Connection ein Thread. Wenn Du jetzt im Client-Programm zwei Threads hast, die beide was zum gleichen Server senden sollen, würde ich das über eine Connection tun, bei verschiedenen Servern, mir jeweils vorherigem connect, würde ich dir zwei connections empfehlen. |
Re: [Indy] TCPServer.send(...) in 2 Threads gleichzeitig?
er schreibt aber mit 2 threads auf EINEN socket..
normal hat ja z.b. der server für JEDEN thread ein socket -> 2 T = 2 S was hat das für einen sinn mit 2 Indy threads auf einen socket zu schreiben ? ( sofern es indy threads sind ) wenn du normale threads meinst und damit dann schreiben willst dann müsstest du die sache selber absichern mit criticalsections da an dieser stelle indy keine eingebaute funktion hat wo das ausschliesst |
Re: [Indy] TCPServer.send(...) in 2 Threads gleichzeitig?
@SupermuckeL:
Trotzdem crashed es nicht, wenn Du aus zwei normalen TThread-Objekten, in das gleiche Socket schreibst. |
Re: [Indy] TCPServer.send(...) in 2 Threads gleichzeitig?
hmm 100%ig ? auch nicht zur gleichen zeit? weil der socket is ja dem indy thread untergeordnet bzw steht alleine da *g*g schwer zu beschreiben wie ich das meine.. naja egal.. ich würde auch sagen.. versuchs mal ( penetrations app basteln und nen paar minuten rennen lassen :) )
|
Re: [Indy] TCPServer.send(...) in 2 Threads gleichzeitig?
Zitat:
Zitat:
Zitat:
Zitat:
Ich denke, ich werde das Ganze dann doch anders machen... |
Re: [Indy] TCPServer.send(...) in 2 Threads gleichzeitig?
kannst ja dein problem schildern.. was willst du realisieren.. vielleicht kann man das ganze auch einfacher lösen.. wenn wir halt wissen was du da bastelst :)
|
Re: [Indy] TCPServer.send(...) in 2 Threads gleichzeitig?
Ein Chat (hab das schonmal in nem anderen thread erklärt,
![]() Komme aber seehr langsam voran weil ich viele andere Dinge nebenbei mache. Weil du sagst "einfacher lösen": Ich bin am Überlegen, ob ich nicht - wie Stefano bei LanMess - mit UDP arbeite. Es gibt - anders als das Konzept, das ich in dem anderen Thread erklärt habe - keinen Server, die Client haben alle die IPs von den anderen gespeichert und schicken den Text per UDP an diese. Das wäre meiner Meinung nach ziemlich stabil und nicht besonders schwer (irgendwann muss ich halt noch dahinterkommen, wie man TList verwendet ;) ). Oder ich machs mir ganz einfach und verwende Broadcasts...aber nach Möglichkeit will ich die nur dort verwenden wo es anders nicht geht (z.B. beim Suchen von anderen Clients). Will aber nicht zuviel sagen weil ich im Moment nicht daran arbeiten kann und nicht weiß wie schwer / einfach das wirklich ist. Auf die ursprüngliche Frage in diesem Thread habe ich ja die Antwort. |
Re: [Indy] TCPServer.send(...) in 2 Threads gleichzeitig?
Super, habe jetzt angefangen das Ganze mit UDP neu zu schreiben.
Jetzt weiß ich auch, wozu ich das konkret benötige dass 2 Threads gleichzeitig senden: Das OnRead-Ereignis beim UDP-Server wird ja in einem Thread ausgeführt. Und bei einigen speziellen Nachrichten antworte ich sofort, wenn ich sie bekomme. Schätze mal auch der UDP-Client ist nicht thread-sicher, oder? Kann ich die send-Funktion des Clients so überschreiben, dass eine kritische Sektion betreten, die normale send-Funktion aufgerufen und die kritische Sektion wieder verlassen wird? Oder muss die dann einen anderen Namen haben (z.B. "writeln")? edit: Habe die Lösung gefunden, sie heißt inherited. Weiß jetzt nur nicht, wie ich die Komponente umändern kann...aber das ist ein anderes Thema, ich mach nen neuen Thread auf. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:03 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