Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi thread mal wieder T_T (https://www.delphipraxis.net/59890-thread-mal-wieder-t_t.html)

itzgyl 30. Dez 2005 04:40


thread mal wieder T_T
 
hallo
habe hier gesucht und auch gegoogelt und habe einfach keine loesung gefunden!
mir stellt sich folgendes problem:

ich habe eine liste mit gameserver ipadressen. es ist aber nicht gesagt, dass noch alle server up sind, deswegen will ist diese (z.T. sehr lange liste(n)) über ein programm abfragen. dazu habe ich einen thread erstellt, der im execute part die stringlist mit den ips abarbeitet (http seite ansteuern).
(die gesammte ip-liste wird im thread am stück bearbeitet)

die ersten ips lang funktioniert das auch wunderbar - nur ab einem bestimmten punkt rast das programm alle anderen ips der liste ab, ohne auch wirklich zu checken!

kennt jemand eine loesung dafuer und koennte mir behilflich sein ?
waere extrem genial
vielen dank :)

jim_raynor 30. Dez 2005 05:37

Re: thread mal wieder T_T
 
Könnte vielleicht das Problem die Beschränkung der Anzahl der gleichzeitigen offenen Verbindungen sein, die mit WinXP ServicePack 2 eingeführt wurde? Du solltest mal versuchen die Anzahl der Verbindungen zu begrenzen.

itzgyl 30. Dez 2005 05:45

Re: thread mal wieder T_T
 
:gruebel: es wird nur 1 thread erstellt und der arbeitet alle ips nacheinander ab, ich habe schon versucht nach jeder gecheckten ip die verbindung zu trennen, ohne erfolg. mir wurde gesagt, dass delphi nie so richtig weiß, wie weit der thread momentan ist aber eigentlich sollte der thread das doch selbst regulieren ? :s

itzgyl 1. Jan 2006 23:10

Re: thread mal wieder T_T
 
#push :oops:

Christian Seehase 1. Jan 2006 23:17

Re: thread mal wieder T_T
 
Moin itzgyl,

womit testest Du denn die Verbindung?
Ein wenig Sourecode könnte hilfreich sein.

Ich habe die Vermutung, dass Du dafür eine Komponente benutzt, die nicht threadsave ist.

itzgyl 1. Jan 2006 23:42

Re: thread mal wieder T_T
 
achso, na ich benutze nur indy (idhttp) und checke alles per post/get ab, bei beiden versionen der selbe fehler .. die gameserver installieren nämlich einen kleinen http server, über den eine html seite läuft - und die will ich checken (ich will unbedingt die seite checken, weil dort einige wichtige infos zum gameserver stehen) ..
versucht habe ichs bisher so:


Delphi-Quellcode:
//zum starten:
  Thread1 := TGetThread.Create;
  with Thread1 do
  begin
    FreeOnTerminate := true;
    IPs := memo2.Text;
    Resume;
  end;
Delphi-Quellcode:
//im thread.execute:
  FList.Text := IPs;

  for i := 0 to FList.Count - 1 do
  begin
    try
      form1.Label1.caption := FList.Strings[i];
      try
        Fidhttp.Head('http://' + FList.Strings[i] + '/docs/index.htm');
      except
      end;
    finally
      if pos('200 OK', Fidhttp.ResponseText) > 0 then
        fhead_check := true else fhead_check := false;

      if fhead_check = true then
      begin          
       try src := FIDhttp.get('http://' + FList.Strings[i] + '/docs/index.htm'); except end;
       //blabla - ein paar infos auslesen halt;
      end;
    end;
  end;
  FList.Free;

wie gesagt, am anfang funktionierts ja auch wunderbar nur irgendwann rast das ding die ips nur noch ab ohne zu prüfen.

thx
mfg

SirThornberry 1. Jan 2006 23:47

Re: thread mal wieder T_T
 
im thread
Delphi-Quellcode:
form1.Label1.caption
zu verwenden ist aber nicth dein ernst?
du greifst damit unsyncronisiert auf den hauptthread zu was richtig daneben gehen kann.

itzgyl 1. Jan 2006 23:54

Re: thread mal wieder T_T
 
lol das ist ja nur zum überprüfen erstmal .. damit ich weiß bei welcher ip er momentan ist - anders wüsste ich ja nichtmal, dass er irgendwann alle ips durchrast

oder hast du ne bessere lösung parat ?

Matze 1. Jan 2006 23:57

Re: thread mal wieder T_T
 
Also der Zugriff auf VCL-Controls solltegenerell über Delphi-Referenz durchsuchenSynchronize() erfolgen.

SirThornberry 1. Jan 2006 23:58

Re: thread mal wieder T_T
 
mit syncronize könntest du das ganze ordentlich machen.
Hast du schon probiert für jede ip das TIdHTTP object neu zu erstellen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 Uhr.
Seite 1 von 2  1 2      

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