AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi [Indy] TCPServer.send(...) in 2 Threads gleichzeitig?
Thema durchsuchen
Ansicht
Themen-Optionen

[Indy] TCPServer.send(...) in 2 Threads gleichzeitig?

Ein Thema von Tubos · begonnen am 28. Jul 2004 · letzter Beitrag vom 31. Jul 2004
Antwort Antwort
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#1

[Indy] TCPServer.send(...) in 2 Threads gleichzeitig?

  Alt 28. Jul 2004, 20:08
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
Lukas
  Mit Zitat antworten Zitat
NeoLuxembourg

Registriert seit: 16. Jul 2004
12 Beiträge
 
#2

Re: [Indy] TCPServer.send(...) in 2 Threads gleichzeitig?

  Alt 28. Jul 2004, 22:19
Wie wärs mit versuchen ?
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: [Indy] TCPServer.send(...) in 2 Threads gleichzeitig?

  Alt 29. Jul 2004, 13:32
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.
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#4

Re: [Indy] TCPServer.send(...) in 2 Threads gleichzeitig?

  Alt 29. Jul 2004, 13:42
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
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: [Indy] TCPServer.send(...) in 2 Threads gleichzeitig?

  Alt 29. Jul 2004, 13:48
@SupermuckeL:

Trotzdem crashed es nicht, wenn Du aus zwei normalen TThread-Objekten, in das gleiche Socket schreibst.
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#6

Re: [Indy] TCPServer.send(...) in 2 Threads gleichzeitig?

  Alt 29. Jul 2004, 13:50
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 )
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#7

Re: [Indy] TCPServer.send(...) in 2 Threads gleichzeitig?

  Alt 29. Jul 2004, 18:33
Zitat:
Wie wärs mit versuchen ?
Habe hier kein Delphi, bin aber schon am Überlegen wie ich weitermache wenn ich wieder zuhause bin

Zitat:
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
Genau, das meine ich.

Zitat:
was hat das für einen sinn mit 2 Indy threads auf einen socket zu schreiben ?
Das weiß ich im Moment auch nicht so genau, kann auch nicht nachsehen weil ich den Source nicht hier habe

Zitat:
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
Ok, thx!

Ich denke, ich werde das Ganze dann doch anders machen...
Lukas
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#8

Re: [Indy] TCPServer.send(...) in 2 Threads gleichzeitig?

  Alt 29. Jul 2004, 23:33
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
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#9

Re: [Indy] TCPServer.send(...) in 2 Threads gleichzeitig?

  Alt 30. Jul 2004, 18:50
Ein Chat (hab das schonmal in nem anderen thread erklärt, LanMess).

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.
Lukas
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#10

Re: [Indy] TCPServer.send(...) in 2 Threads gleichzeitig?

  Alt 31. Jul 2004, 17:11
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.
Lukas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:51 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