AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi IdTCPServer hängt beim Schließen mit verbundenen Clients
Thema durchsuchen
Ansicht
Themen-Optionen

IdTCPServer hängt beim Schließen mit verbundenen Clients

Ein Thema von s.h.a.r.k · begonnen am 12. Sep 2008 · letzter Beitrag vom 17. Sep 2008
 
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

IdTCPServer hängt beim Schließen mit verbundenen Clients

  Alt 12. Sep 2008, 10:01
hallo miteinander,

zuvor gleich mal gesagt: ich habe schon mal einen thread zu diesem thema eröffnet gehabt, werde in diesem aber nicht weiter fortfahren, da dieser schon recht alt ist und mein problem nicht löst.

zu meinem problem nun: ich habe eine anwendung für den server und einen für den client. beim server habe ich mir die funktion eingebaut, dass man einen client "kicken" kann, eben ein force-disconnect vom server aus. ich will hierbei ausdrücklich dem client keine nachricht zukommen lassen, dass dieser selbst disconnected, da dieser die nachricht evtl. ja nicht erhalten kann oder nicht verarbeitet, da dieser hängt. diese habe ich wie folgt realisiert:
aContext.Connection.Disconnect(); wenn dieser code ausgeführt wurde, dann ist der client wirklich disconnected, allerdings ist es wohl auch so, dass die folgende fehlermeldung kommt, die ich nicht verstehe. ich hoffe, ihr könnt mir hier weiter helfen.
Code:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt tcp_server.exe ist eine Exception der Klasse EIdNotConnected mit der Meldung 'Not Connected' aufgetreten.
---------------------------
Anhalten  Fortsetzen  Hilfe
---------------------------
dies war an sich nur das vorgeplänkel, da das eigentliche problem auftritt, wenn ich den server schließen will. da ich mich nicht auf die nachricht und das selbstständige disconncet der clients verlassen will, will ich eben jeden client vom server kicken und diesen dann schließen. dies liegt daran, dass der server sich beim versuch alle yarns zu terminieren (ich habe alleine schon mal keine ahnung was yarns sind ) aufhängt. dies passiert aber eben nur, wenn mindestens ein client verbunden ist. ich verwende den folgenden code bisher, der allerdings keine abhilfe schafft und den server toll einfrieren lässt, eben in einer endlosschleife beim versuch die yarns zu terminieren - soweit habe ich das problem schon verfolgen können.
Delphi-Quellcode:
// in der FClientList stehen alle Clients
// vom Typ TIdContext, die ich manuel
// beim OnConnect speichere
for i := FClientList.Count - 1 downto 0 do
  TIdContext(FClientList[i]).Connection.Disconnect();
 
// TCP-Server deaktivieren
FTCPServer.Active := False;
ich hoffe, es findet sich jemand, der dieses problem auch hat(te) und eine lösung findet

mit freudlichen grüßen
pfäffle armin
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
 


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 22:26 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