![]() |
TIdTCPclient hängt sich auf
Ich verstehe nicht warum sich nach der 11-ten IP immer die Applikation hängen bleibt. Kann mir jemand helfen? Habe die Vermutung das der Port sich irgendwie nicht freigibt aber ich weiß nicht was ich da anders machen soll.
Delphi-Quellcode:
for i := 0 to 255 do begin
Client := TIdTCPClient.Create(nil); Client.Port := 2306; Client.Host := ar[i]; try Client.Connect(500); except on e : Exception do begin Client.Disconnect; FreeAndNil(Client); end; end; |
Re: TIdTCPclient hängt sich auf
Es wäre viel sinnvoller, das Objekt einmal zu erzeugen und dann immer mit connect und disconnent zu arbeiten ...
Vielleicht löst das auch schon dein Problem ... |
Re: TIdTCPclient hängt sich auf
hat auch nichts gebracht ;/ auch kein try finally... da muss irgendwas grundlegend falsch sein
EDIT: Ich habe die Lösung gefunden ! Dank dem Timeout von 500 ms ist das jedes mal abgestürzt... Wenn ich da ein Delay von >500 ms einbaue funktioniert es ! |
Re: TIdTCPclient hängt sich auf
Zitat:
Ich habe nämlich grad das gleiche Problem, aber es geht trotzdem nicht ... Bei folgendem Sourcecode bleibt der Scanner einfach irgendwo stehen (so bei 15 oder so ...) und macht nicht weiter ...
Delphi-Quellcode:
TScanner = class (TThread)
public ShowStatus: Boolean; procedure Execute; override; private PortOpen: Boolean; ScanHost: Byte; procedure VCL_State; procedure VCL_Add; end; var Form1: TForm1; Host: Byte = 0; implementation {$R *.dfm} procedure TScanner.Execute; var TCPClient: TIdTCPClient; begin TCPClient := TIdTCPClient.Create(nil); while (Host < 254) AND (not Terminated) do begin inc (Host); ScanHost := Host; if ShowStatus then synchronize (VCL_State); TCPClient.Host := '192.168.0.' + IntToStr (ScanHost); TCPClient.Port := 80; try TCPClient.Connect(1000); PortOpen := TRUE; except PortOpen := FALSE; end; if TCPClient.Connected then TCPClient.Disconnect; synchronize (VCL_Add); end; end; procedure TScanner.VCL_State; begin Form1.ProgressBar1.StepIt; Form1.Label2.Caption := IntToStr(ScanHost); end; procedure TScanner.VCL_Add; begin if PortOpen then Form1.ListBox1.Items.Add('192.168.0.' + inttostr (ScanHost)) end; procedure TForm1.Button1Click(Sender: TObject); begin with TScanner.Create(TRUE) do begin FreeOnTerminate := TRUE; ShowStatus := TRUE; Resume; end; end; |
Re: TIdTCPclient hängt sich auf
*PUSH-Button allerdringestens brauche*
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 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