Einzelnen Beitrag anzeigen

supermuckl

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

Re: Indy TCP-Anwendung: Wie eine tote Verbindung loswerden?

  Alt 24. Mai 2007, 16:50
ähm im server kannst du doch mit timeouts arbeiten ?!
dann gibts auch keine deadlocks sondern nur kleine verzögerungen durch die ablaufenden timeouts

es geht ja sowieso alles für jeden client in einem eigenen thread ab (OnExecute)


hab da schon einige client serveranwendungen gebaut und nie probs gehabt

beispielsweise im OnServerExecute kannst du die ReadLn's mit Timeouts versehen:

athread.Connection.ReadLn(#$A,1000); <- Timeout von 1sec

du kannst auch hergehen und die clients dauerhaft pakete an den server schicken lassen
und wenn die nimmer ankommen kann der server die automatisch alle killen (die client thread leichen)

hab dir mal nen altes projekt mit indy9 angehängt, das diese pingerei usw verdeutlichen soll
allerdings ohne killen
Angehängte Dateien
Dateityp: zip tcp-timeout-test_114.zip (674,7 KB, 11x aufgerufen)
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat