📄 sportthrd.~pas
字号:
unit SPortThrd;
interface
uses
Classes,Sysutils,scktcomp,ExtCtrls,Forms,StdCtrls;
type
FindPortIP2 = class(TThread)
UseCSockt:TClientSocket;
UseState:Boolean;
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(ShowPanel:TPanel);
destructor Destroy;override;
Procedure ConnectIP(IPaddr:String;DPort:Integer;SaveList:TStrings);
Procedure InsertIP;
end;
Var
InIPAddr:String;
InSvList:TStrings;
InPort:Integer;
InPanel:TPanel;
SaveEchoIP:string;
implementation
Constructor FindPortIP2.Create(ShowPanel:TPanel);
begin
InPanel:=ShowPanel;
UseCSockt:=TClientSocket.Create(nil);
UseCSockt.ClientType:=ctNonBlocking;
UseCSockt.OnError:=InError;
UseCSockt.OnConnect:=InConnect;
UseCSockt.OnDisconnect:=InDisconnect;
Self.FreeOnTerminate:=False;
inherited Create(False);
end;
Procedure FindPortIP2.ConnectIP(IPaddr:String;DPort:Integer;SaveList:TStrings);
begin
UseState:=True;
InIPAddr:=IPAddr;
InPort:=DPort;
InSvList:=SaveList;
UseCSockt.Address:=InIPAddr;
UseCsockt.Port:=InPort;
try
UseCSockt.Open;
except
UseCSockt.Address:='';
end;
end;
Procedure FindPortIP2.InsertIP;
begin
if SaveEchoIP<>'' then
InSvList.Insert(0,SaveEchoIP);
end;
procedure FindPortIP2.InConnect(Sender: TObject;Socket: TCustomWinSocket);
Begin
InPanel.Caption:='已连接<'+InIPAddr+'--'+IntToStr(InPort);
SaveEchoIP:=Socket.RemoteAddress+
' <'+Socket.RemoteHost+'>: '+IntToStr(socket.RemotePort);
InsertIP;
Socket.Close;
UseCSockt.Close;
UseCSockt.Address:='';
UseState:=False;
end;
procedure FindPortIP2.InError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
ErrorCode:=0; socket.Close;
InPanel.Caption:=InIPAddr+'!'+IntToStr(InPort)+'断开';
UseCSockt.Address:='';
SaveEchoIP:='';
UseState:=False;
end;
procedure FindPortIP2.InDisconnect(Sender: TObject;Socket: TCustomWinSocket);
Begin
if Socket.RemoteAddress<>'' then
begin
InPanel.Caption:=InIPAddr+'='+IntToStr(InPort)+'响应';
end else
InPanel.Caption:=InIPAddr+'-'+IntToStr(InPort)+'无响应';
UseCSockt.Address:='';
SaveEchoIP:='';
UseState:=False;
end;
destructor FindPortIP2.Destroy;
begin
UseCSockt.Free;
end;
procedure FindPortIP2.Execute;
begin
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -