📄 utcpip.pas
字号:
unit uTCPIP;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, IPHelper, StdCtrls, ComCtrls, Buttons, jpeg;
const
version = '1.0';
type
TIPForm = class( TForm )
Timer1: TTimer;
PageControl1: TPageControl;
ARPSheet: TTabSheet;
ConnSheet: TTabSheet;
IP1Sheet: TTabSheet;
IPAddrMemo: TMemo;
StaticText6: TStaticText;
IP2Sheet: TTabSheet;
IPForwMemo: TMemo;
StaticText8: TStaticText;
AdaptSheet: TTabSheet;
AdaptMemo: TMemo;
StaticText9: TStaticText;
TabSheet1: TTabSheet;
IfMemo: TMemo;
StaticText15: TStaticText;
GroupBox1: TGroupBox;
cbTimer: TCheckBox;
SpeedButton1: TSpeedButton;
btRTTI: TSpeedButton;
edtRTTI: TEdit;
StaticText14: TStaticText;
cbRecentIPs: TComboBox;
GroupBox2: TGroupBox;
StaticText2: TStaticText;
TCPMemo: TMemo;
GroupBox3: TGroupBox;
StaticText3: TStaticText;
UDPMemo: TMemo;
GroupBox4: TGroupBox;
StaticText1: TStaticText;
ARPMemo: TMemo;
GroupBox5: TGroupBox;
StaticText10: TStaticText;
NwMemo: TMemo;
GroupBox6: TGroupBox;
StaticText7: TStaticText;
TCPStatMemo: TMemo;
StaticText5: TStaticText;
IPStatsMemo: TMemo;
GroupBox7: TGroupBox;
StaticText4: TStaticText;
UDPStatsMemo: TMemo;
Panel1: TPanel;
ICMPOutMemo: TMemo;
ICMPInMemo: TMemo;
StaticText12: TStaticText;
procedure Timer1Timer( Sender: TObject );
procedure FormCreate( Sender: TObject );
procedure SpeedButton1Click( Sender: TObject );
procedure cbTimerClick( Sender: TObject );
procedure btRTTIClick( Sender: TObject );
procedure cbRecentIPsClick( Sender: TObject );
private
{ Private declarations }
procedure DOIpStuff;
public
{ Public declarations }
end;
var
IPForm : TIPForm;
implementation
{$R *.DFM}
//创建窗体事件
procedure TIPForm.FormCreate( Sender: TObject );
begin
PageControl1.ActivePage := ConnSheet;
Caption := Caption + ' ' + Version;
DOIpStuff;
Timer1.Enabled := true;
end;
//更新网络连接信息
procedure TIPForm.DOIpStuff;
begin
Get_NetworkParams( NwMemo.Lines );
Get_ARPTable( ARPMemo.Lines );
Get_TCPTable( TCPMemo.Lines );
Get_TCPStatistics( TCPStatMemo.Lines );
Get_UDPTable( UDPMemo.Lines );
Get_IPStatistics( IPStatsMemo.Lines );
Get_IPAddrTable( IPAddrMemo.Lines );
Get_IPForwardTable( IPForwMemo.Lines );
Get_UDPStatistics( UDPStatsMemo.Lines );
Get_AdaptersInfo( AdaptMemo.Lines );
Get_ICMPStats( ICMPInMemo.Lines, ICMPOutMemo.Lines );
Get_IfTable( IfMemo.Lines );
Get_RecentDestIPs( cbRecentIPs.Items );
end;
//设置定时更新
procedure TIPForm.cbTimerClick( Sender: TObject );
begin
Timer1.Enabled := cbTimer.State = cbCHECKED;
end;
//定时更新
procedure TIPForm.Timer1Timer( Sender: TObject );
begin
if cbTimer.State = cbCHECKED then
begin
Timer1.Enabled := false;
DoIPStuff;
Timer1.Enabled := true;
end;
end;
//更新
procedure TIPForm.SpeedButton1Click( Sender: TObject );
begin
Speedbutton1.Enabled := false;
DoIPStuff;
Speedbutton1.Enabled := true;
end;
//RTTI时间计算
procedure TIPForm.btRTTIClick( Sender: TObject );
var
IPadr : dword;
Rtt, HopCount : longint;
Res : integer;
begin
btRTTI.Enabled := false;
Screen.Cursor := crHOURGLASS;
IPadr := Str2IPAddr( edtRTTI.Text );
Res := Get_RTTAndHopCount( IPadr, 128, RTT, HopCount );
if Res = NO_ERROR then
ShowMessage( ' Round Trip Time '
+ inttostr( rtt ) + ' ms, '
+ inttostr( HopCount )
+ ' hops to : ' + edtRTTI.Text
)
else
ShowMessage( 'Error occurred:' + #13
+ ICMPErr2Str( Res ) ) ;
btRTTI.Enabled := true;
Screen.Cursor := crDEFAULT;
end;
//最近连接的远程IP列表
procedure TIPForm.cbRecentIPsClick( Sender: TObject );
begin
edtRTTI.Text := cbRecentIPs.Items[cbRecentIPs.ItemIndex];
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -