AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Wieso wird OnDisconnect mehrfach ausgeführt?
Thema durchsuchen
Ansicht
Themen-Optionen

Wieso wird OnDisconnect mehrfach ausgeführt?

Ein Thema von Pseudemys Nelsoni · begonnen am 16. Okt 2005 · letzter Beitrag vom 16. Okt 2005
 
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Wieso wird OnDisconnect mehrfach ausgeführt?

  Alt 16. Okt 2005, 08:01
Moin,

ich habe folgendes:

Delphi-Quellcode:
procedure TServServ.TimerHandler(Sender: TObject);
var
  I: Integer;
begin
  for I := FUserList.Count-1 downto 0 do
    if (TUser(FUserList.Items[I]).FLastMessage + FSessionTimeout) < GetTickCount then
      TUser(FUserList.Items[I]).FSocket.Close;
end;

function TServServ.UserBySock(Socket: TCustomWinSocket): TUser;
var
  I: Integer;
begin
  Result := nil;
  for I := 0 to FUserList.Count-1 do
    if TUser(FUserList.Items[I]).FSocket = Socket then
      Result := TUser(FUserList.Items[I]);
end;

procedure TServServ.ClientDisconnect(Sender: TObject; ASocket: TCustomWinSocket);
begin
  messagebox(0, pchar(inttostr(FUserList.Count)), 'hi', 0);
  FUserList.Remove(UserBySock(ASocket));
end;
Die MessageBox ist nur Testweise drin. Es handelt sich hier um einen ServerSocket. Wenn ich auf diesen mit einem Client verbinde, wird dieser nach 5 Sekunden disconnectet (FLastMessage + FSessionTimeout) < GetTickCount), das Problem ist, dass nach diesen 5 Sekunden unendlich MessageBoxen (aus der ClientDisconnect prozedur) aufpoppen, dass muss heissen, dass das Timer event ewig einen User findet der länger als 5 Sekunden verbunden ist, das wiederrum muss heissen, dass obwohl der User bereits disconnected ist, sein Objekt in der Userlist noch existiert.... wie aber kann das sein? ich lösche es doch: "FUserList.Remove(UserBySock(ASocket));"

Hm.... vielleicht hat ja jemand nen Tipp
Mario
MSN: cyanide@ccode.de
  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:03 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