📄 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 + -