?? pingthread.pas
字號:
unit PingThread;
interface
uses
Classes,stdctrls,Sysutils,scktcomp,checklst;
type
PingIP = class(TThread)
UseCSockt:TClientSocket;
procedure InConnect(Sender: TObject;Socket: TCustomWinSocket);
procedure InError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure InDisconnect(Sender: TObject;Socket: TCustomWinSocket);
private
{ Private declarations }
protected
procedure Execute; override;
public
constructor Create(IPaddr:String;DPort:Integer;
SaveIP:TCheckListBox;ShowLabel:TLabel);
Procedure InsertIP;
end;
Var
InIPAddr:String;
InSaveIP:TCheckListBox;
InPort:Integer;
InLabel:TLabel;
implementation
Constructor PingIP.Create(IPaddr:String;DPort:Integer;
SaveIP:TCheckListBox;ShowLabel:TLabel);
begin
InIPAddr:=IPAddr;
InSaveIP:=SaveIP;
InPort:=DPort;
InLabel:=ShowLabel;
UseCSockt:=TClientSocket.Create(nil);
UseCSockt.Address:=InIPAddr;
UseCSockt.ClientType:=ctNonBlocking;
UseCsockt.Port:=InPort;
UseCSockt.OnError:=InError;
UseCSockt.OnConnect:=InConnect;
UseCSockt.OnDisconnect:=InDisconnect;
Self.FreeOnTerminate:=True;
inherited Create(False);
end;
Procedure PingIP.InsertIP;
begin
try
InLabel.Caption:='線程'+IntToStr(self.ThreadID)+'正在對目標主機:'+UseCSockt.Address+'->掃描端口:'+IntToStr(UseCSockt.Port)
+'進行中... ... .'+UseCSockt.Host;
UseCSockt.Open;
except
Self.Terminate;
self:=nil;
end;
end;
procedure PingIP.InConnect(Sender: TObject;Socket: TCustomWinSocket);
Begin
InLabel.Caption:='*****線程'+IntToStr(self.ThreadID)+'已連接目標主機:'+InIPAddr+':'+IntToStr(InPort)+'---探測正在返回... .. .';
InSaveIP.Items.Insert(0,Socket.RemoteAddress+'='+'可連接'+Socket.RemoteHost);
Socket.Close;
// self:=nil;
end;
procedure PingIP.InError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
ErrorCode:=0;
Socket.Close;
self:=nil;
end;
procedure PingIP.InDisconnect(Sender: TObject;Socket: TCustomWinSocket);
Begin
if Socket.RemoteAddress<>'' then
begin
InLabel.Caption:='返回線程'+IntToStr(self.ThreadID)+
'斷開連接目標主機:'+InIPAddr+'::'+IntToStr(InPort)+'。';
end else InLabel.Caption:='返回線程'+IntToStr(self.ThreadID)+
'搜索目標主機:'+InIPAddr+'::'+IntToStr(InPort)+'---失敗已斷開。';
self:=nil;
end;
procedure PingIP.Execute;
begin
Synchronize(InsertIP);
self.ReturnValue:=12;
Self.Terminate;
self:=nil;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -