Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TIdTCPclient hängt sich auf (https://www.delphipraxis.net/36334-tidtcpclient-haengt-sich-auf.html)

CReber 18. Dez 2004 15:27


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;

jfheins 18. Dez 2004 17:10

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 ...

CReber 18. Dez 2004 17:40

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 !

jfheins 19. Dez 2004 12:07

Re: TIdTCPclient hängt sich auf
 
Zitat:

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 !
:wiejetzt:
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;

jfheins 20. Dez 2004 15:21

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