AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy TCPServer beenden mit toten Clients
Thema durchsuchen
Ansicht
Themen-Optionen

Indy TCPServer beenden mit toten Clients

Ein Thema von hsg · begonnen am 8. Jun 2012 · letzter Beitrag vom 14. Jun 2012
Antwort Antwort
mjustin

Registriert seit: 14. Apr 2008
3.011 Beiträge
 
Delphi 2009 Professional
 
#1

AW: Indy TCPServer beenden mit toten Clients

  Alt 8. Jun 2012, 14:26

Exception wird ja auch keine geworfen. Zu keinem Zeitpunkt.
Werden Exceptions eventuell so behandelt, dass Indy sie nicht bemerkt? Indy verwendet einige (selbstdefinierte) Exceptions wie EIdConnClosedGracefully zur Steuerung:

Zitat:
You need to get rid of your exception handling, or at least re-raise any EIdException-derived exceptions you catch. You are blocking Indy's internal notifications from being dispatched and processed correctly.
(https://forums.embarcadero.com/messa...ssageID=257582)
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Indy TCPServer beenden mit toten Clients

  Alt 10. Jun 2012, 03:26
Wenn eine TCP-Verbindung physisch getrennt wird, kann das keiner der beteiligten Partner erkennen ohne dass Daten gesendet werden.
Nur wer Daten sendet, kann erkennen dass die Verbindung unterbrochen ist.
Dazu gibt es in vielen Protokollen einen NOP-Befehl (NO-Operation, Befehl der nichts tut).
Man kann aber auch ein Datenpaket der Länge 0 senden, wobei das aber nicht so zuverlässig wie ein NOP-Befehl ist.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.011 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Indy TCPServer beenden mit toten Clients

  Alt 10. Jun 2012, 07:10
Wenn eine TCP-Verbindung physisch getrennt wird, kann das keiner der beteiligten Partner erkennen ohne dass Daten gesendet werden.
Die Verbindung wird, wenn ich es soweit richtig verstanden habe, serverseitig zuerst logisch beendet durch senden (IOHandler.Writeln('CLOSE_REQUEST@ '), und bei dieser Operation hängt Indy noch nicht. Indy beendet den Server aber danach nicht, so dass die Anwendung nicht terminiert.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Indy TCPServer beenden mit toten Clients

  Alt 11. Jun 2012, 06:52
Nur wer Daten sendet, kann erkennen dass die Verbindung unterbrochen ist.
Es wird ja vorweg gesendet (Die Close_Request-Message), trotzdem erkennt der Server nicht das er alleine auf weiter Flur steht.
Das Beenden von unterbrochenen Verbindungen geht ja zum Teil. Nur wenn das angesprochene Gerät selbst nicht mehr im Netz ist, hängt sich der Server auf. Ist das Gerät im Netz, klappt auch das Beenden ohne Probleme.
  Mit Zitat antworten Zitat
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Indy TCPServer beenden mit toten Clients

  Alt 11. Jun 2012, 06:34

Werden Exceptions eventuell so behandelt, dass Indy sie nicht bemerkt? Indy verwendet einige (selbstdefinierte) Exceptions wie EIdConnClosedGracefully zur Steuerung:

Zitat:
You need to get rid of your exception handling, or at least re-raise any EIdException-derived exceptions you catch. You are blocking Indy's internal notifications from being dispatched and processed correctly.
(https://forums.embarcadero.com/messa...ssageID=257582)
Es gibt zwar an ein- zwei Stellen ein Exception-Handling, aber auch das wird nicht getriggert.
Es herrscht einfach nur Schweigen im Walde
  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 07:20 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