Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TCPServer hängt sich nach Exception auf (https://www.delphipraxis.net/75978-tcpserver-haengt-sich-nach-exception-auf.html)

s.h.a.r.k 28. Aug 2006 09:10


TCPServer hängt sich nach Exception auf
 
Guten Morgen,

gleich mal vorweg: Indy10 - mit Delphi 2005 installiert...

nun zu meinem Problem: Und zwar habe ich einen Client und einen Server erstellt, der eigentlich recht gut funktioniert. Bis auf das eine kleine, aber entscheidende Problem: Wenn mindestens ein Client mit dem Server verbunden ist und ich beim Server den Befehl:
Delphi-Quellcode:
Server.Active := False;
ausführe, d.h. den Server herunterfahren will, hängt sich das Server-Programm komplett auf. Selbst wenn ich das Programm debugge geht nichts mehr vorwärts, genau ab dem oben genannten Befehl. Ein paar weitere Infos: CPU-Last ist gleich null, Server ist von einem Client nich mehr erreichbar, d.h. er ist offline.

Ich weiß nicht mehr woran das ganze liegen kann... Ich hab bisher ein kleines WorkArround geschrieben, das bevor ich den oben genannten Befehl aufrufe, jedem Client eine Message schickt, auf die der Client automatisch vom Server disconnected, d,h. Client.Disconnect aufruft. Aber das kann es in meinem Augen doch nicht sein?!

PS: Ein ähnliches Thema habe ich zwar gefunden, aber ist das auch auf mein Problem anwendbar? (Link)

Wenn ihr Code braucht, kann ich den gerne noch anhängen, nur bin ich grad am Internet-Rechner und hab ihn nich parat!

Ich hoffe einer von euch kann mir da weiter helfen!

mfg Armin

franktron 28. Aug 2006 10:17

Re: TCPServer hängt sich nach Exception auf
 
Das Problem hatten wir schonmal glaub ich.

Hier die lösung du must im Ereignis OnBeforDisconnect erst alle Clients rauschmeisen

s.h.a.r.k 28. Aug 2006 11:54

Re: TCPServer hängt sich nach Exception auf
 
Finde das Ereignis irgendwie nicht?! Oder bin ich nur zu blöd zum finden?!

Hab grad außerdem mal in der DP nach dem Begiff "OnBeforDisconnect" gesucht, aber nix gefunden! Kannst du mir da eventuell weiterhelfen?! wäre echt klasse, bin total am verzweifeln :cry:

Meflin 28. Aug 2006 11:56

Re: TCPServer hängt sich nach Exception auf
 
Also sollte es nur daran scheitern, das heisst auch nicht "OnBeforDisconnect" sondern Hier im Forum suchenOnBeforeDisconnect ;)

Allerdings findet sich auch dazu nichts in der DP :(


s.h.a.r.k 28. Aug 2006 13:28

Re: TCPServer hängt sich nach Exception auf
 
@Meflin: Soweit war ich auch schon ;) aber wie du schon gesagt hast - Fehlanzeige!

Allerdings habe ich die Lösung des Problems, jedenfalls ist bisher kein weiterer Fehler aufgetreten! Und zwar habe ich ja eine eigene Prozedur geschrieben, die mir den Server schließt:

Delphi-Quellcode:
// Variable Server ist vom Typ TIdTCPServer
// eventl. muss die Unit "IdContext" zu den uses-Klauseln hinzugefügt werden,
// weil das nicht automatisch gemacht wird
function StopServer: Boolean;
var
  CL : TList;
  i : Integer;
begin
  // auf diesen Teil kam ich durch den Tipp von franktron
  CL := Server.Contexts.LockList;
  try
    for i := 0 to CL.Count - 1 do
      Server.Contexts.Remove(ClientList.Items[0]);
  finally
    CL.Free;
    Server.Contexts.UnlockList;
  end;
 
  // Server schließen
  try
    Server.Active := False; // <-- hier trat bisher immer der Fehler auf
                            // d.h. das Programm stand hier komplett still
  except
    Result := False; end;

  if not Server.Active then
  begin
    Server.Bindings.Clear;
    Result := True;
  end
  else Result := False;
end;
Jetzt wäre es noch klasse, wenn das jemand von euch testen könnte und/oder Äußerungen, Kritik etc. posten könnte!

stoxx 28. Aug 2006 15:51

Re: TCPServer hängt sich nach Exception auf
 
Zitat:

Allerdings habe ich die Lösung des Problems, jedenfalls ist bisher kein weiterer Fehler aufgetreten! Und zwar habe ich ja eine eigene Prozedur geschrieben, die mir den Server schließt:
ich habe leider bei meinem Problem keinen Einfluss auf die Quelltexte der Serversoftware.

http://www.delphipraxis.net/internal...ighlight=ntdll

Es funktionierte ja auch bis einschließlich Delphi6 einwandfrei.

Um schlussfolgern zu können, ob es sich um dasselbe Problem handelt, wäre es nun sehr interessant, ob Deine ALTE Lösung mit Delphi6 funktioniert, falls Du die Möglichkeit hast, das auf Delphi 6 zu testen.

Vielen Dank, falls Du mal Zeit dafür finden solltest, genau das zu testen !

Gruß stoxx

s.h.a.r.k 29. Aug 2006 09:56

Re: TCPServer hängt sich nach Exception auf
 
Habe hier auf der Arbeit sogar Delphi 6 - wenn ich Zeit habe teste ich es gern mal für dich, ALLERDINGS liege ich in meinem Zeitplan, bedingt durch dieses bescheidene Problem ca 2 Wochen zurück - gerechtnet auf die 11 Wochen, wo ich hier bin ist das leider sehr viel. Daher weiß ich net ob ich dazu komme! Aber ich werds probieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:00 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