scanhostportthreadunit.pas

来自「DELPHI 下远程控制源码」· PAS 代码 · 共 93 行

PAS
93
字号
unit ScanHostPortThreadUnit;

interface

uses
  Classes, IdTCPClient,SysUtils,ComCtrls,IdSocks;

type
  ScanHostPortThread = class(TThread)
  private
    { Private declarations }
  protected     
    SaveTL:TTreeView;
    ScanTheIP  :String;
    ScanThePort:integer;
    MyTcpClient:TIdTcpClient;
    //TheScktInfo:TSocksInfo;
    Procedure SaveIP;     
    procedure Execute; override;
  public
    Constructor Create(TheIP:String;ThePort:integer;TheTL:TTreeView);
    Destructor Destroy;override;
  end;

implementation
uses ScanIPUnit;
Constructor ScanHostPortThread.Create(TheIP:String;ThePort:integer;
                                                        TheTL:TTreeView);
begin
  inherited Create(True);
  self.FreeOnTerminate:=True;
  ScanTheIP:=TheIP;
  ScanThePort :=ThePort;
  SaveTL:=TheTL;
  MyTcpClient:=TIdTcpClient.Create(nil);
  //TheScktInfo:=TSocksInfo.Create;
    
  LetScanSingle.Enter;
    SdScanCount:=SdScanCount+1;
  LetScanSingle.Leave;

  self.Suspended:=False;
end;  

procedure ScanHostPortThread.Execute;
begin
  //TheScktInfo.Authentication:=saNoAuthentication;
  //TheScktInfo.Version:=svNoSocks;
  //TheScktInfo.Port:=0;
 // MyTcpClient.SocksInfo:=TheScktInfo;
 // MyTcpClient.UseNagle:=True;
  MyTcpClient.Host:=ScanTheIP;
  MyTcpClient.Port:=ScanThePort;
  try
   MyTcpClient.Connect;
  except
  end;
  if MyTcpClient.Connected then
  begin
     Synchronize(SaveIP);
     MyTcpClient.Disconnect;     
  end;
  Self.Terminate;
end;
Procedure ScanHostPortThread.SaveIP;
var
  i:integer;
  TheNode:TTreeNode;
  TheNewNode:TTreeNode;
begin
  For i:=0 to SaveTL.Items.Count-1 do
  begin
     if SaveTL.Items[i].Text=ScanTheIP then
                   TheNode:=SaveTL.Items[i];
  end; 
  TheNewNode:=SaveTL.Items.AddChild(TheNode,IntToStr(ScanThePort));
  TheNewNode.ImageIndex:=1;
  TheNewNode.SelectedIndex:=1;
  TheNewNode.StateIndex:=1;                                 
end;
Destructor ScanHostPortThread.Destroy;
begin 
  MyTcpClient.Free;
  //TheScktInfo.Free;  
  LetScanSingle.Enter;
    SdScanCount:=SdScanCount-1;
  LetScanSingle.Leave;
  inherited Destroy;  
end;

end.
 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?