AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy TCP Server und Threads
Thema durchsuchen
Ansicht
Themen-Optionen

Indy TCP Server und Threads

Ein Thema von Vjay · begonnen am 14. Apr 2005
Antwort Antwort
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#1

Indy TCP Server und Threads

  Alt 14. Apr 2005, 12:20
Hallo,

ich habe irgendwo in einem Programmteil von mir ein Memoryleak und ich finde es einfach nicht. Dazu habe ich mal eine Frage und zwar verwende ich einen TIdTCPServer um bestimmt Prozesse zu überwachen.

Das ganze läuft so ab, zuerst wird ein Request gesendet:

Delphi-Quellcode:
procedure TMainForm.CommandServerinitPDSWatchCommand(ASender: TIdCommand);
begin
 syncAddLog('initpdswatch von ' + ASender.Thread.Connection.Socket.Binding.PeerIP + ' empfangen');
 if ASender.Params.Count > 1 then
  PDS.addWatcher(ASender.Thread, strToIntDef(ASender.Params[0], pds_WatchAll), boolean(strToIntDef(ASender.Params[1], 0)));
end;
Danach werden die ASender.Threads korrekt synchronisiert an einen Thread übergeben, welcher parallel zur Anwendung läuft, Daten sammelt und an die connecteten Clients übergibt.

Das ganze sieht ungefähr so aus:

Delphi-Quellcode:
   // TOSend(Pointerliste) enthält nun alle connections und Daten die versendet werden müssen
   for wdh:= ToSend.count-1 downto 0 do
   begin
    SI:= ToSend[wdh];
    if not terminated then
    begin
     try
      SI.PeerThread.Connection.OpenWriteBuffer;
      SI.Daten.sendOverIndyPeerThread( Si.PeerThread, Si.komprimiert, SI.abZeit);
      SI.PeerThread.Connection.CloseWriteBuffer;
     except
      syncAddLog('watchThread Exception 4');
      try
       SI.PeerThread.Connection.CancelWriteBuffer;
      except
       syncAddLog('watchThread Exception 4.5');
      end;
     end;
    end;
    dispose( SI);
   end;
Nun wie gesagt wird das Programm immer grösser und ich suche bereits seit 2 Wochen nach dem Leak, der Code ist ansonsten 100%ig korrekt und irgendwelche MemCheck - Hilfsunits haben ebenfalls nichts gefunden. Das Einzige was mir noch einfällt ist, dass es irgendwie ein Problem mit dem Indyserver in Bezug auf synchronisierung(?) geben könnte.

Ansonsten verwende ich noch exzessiv TBitmap in dem Thread, könnte es sein dass dieses ein Memoryleak hat? Kann mir da jemand was zu sagen, darf man so auf die PeerConnections zugreifen?

Danke,
Volker
Wer später bremst ist eher tot.
  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 12:38 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