![]() |
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 :) |
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.
|
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
|
Re: thread mal wieder T_T
#push :oops:
|
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. |
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 |
Re: thread mal wieder T_T
im thread
Delphi-Quellcode:
zu verwenden ist aber nicth dein ernst?
form1.Label1.caption
du greifst damit unsyncronisiert auf den hauptthread zu was richtig daneben gehen kann. |
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 ? |
Re: thread mal wieder T_T
Also der Zugriff auf VCL-Controls solltegenerell über
![]() |
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. |
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