Delphi 模拟 Ping命令

本文介绍了如何利用Indy库中的ICMP控件在Delphi环境中实现Ping功能,通过示例代码展示了从输入IP地址到接收响应包的完整流程,并详细解析了Ping操作的各个关键步骤及输出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Delphi 模拟Ping需要借助 Indy中的 ICMP控件。

源码如下:

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  Ping(icmp, Edit1.Text);
end;

procedure TForm1.icmpReply(ASender: TComponent; const AReplyStatus:
  TReplyStatus);
var
  sTime: string;
begin
//检测Ping的回复错误
  if (AReplyStatus.MsRoundTripTime = 0) then
    sTime := '<1'
  else
    sTime := '=';

//在列表框中显示Ping消息
  ListBox1.Items.Add(Format('ICMP_SEQ=%d Reply from %s [%s] : Bytes=%d time%s%d ms TTL=%d',
    [AReplyStatus.SequenceId,
      Edit1.Text,
      AReplyStatus.FromIpAddress,
      AReplyStatus.BytesReceived,
      sTime,
      AReplyStatus.MsRoundTripTime,
      AReplyStatus.TimeToLive]));
end;

procedure TForm1.Ping(AICMP: TIdIcmpClient; AIP: string);
var
  i: integer;
begin
  AICMP.Host := AIP;
  AICMP.ReceiveTimeout := 1000; //设置超时
  for i := 0 to 3 do begin
    AICMP.Ping();
    Application.ProcessMessages
  end;
end;
end.

效果图如下:

Ping

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值