我如何使用delphi跟踪IP

时间:2010-11-14 16:24:30

标签: delphi indy delphi-xe traceroute

我需要跟踪ip的路由,实际上我正在使用TIdTraceRoute单元中的idTraceRoute indy组件。

   IdTraceRoute1:= TIdTraceRoute.Create(Self);
   IdTraceRoute1.ResolveHostNames:= True;
   IdTraceRoute1.ReceiveTimeout:= 5000;
   IdTraceRoute1.OnReply:= TraceRoute;

    IdTraceRoute1.Host:= 'www.google.com';
    IdTraceRoute1.Trace;


procedure TForm1.TraceRoute(ASender: TComponent;
  const AReplyStatus: TReplyStatus);
begin
   Memo1.Lines.Add(AReplyStatus.FromIpAddress);
end;

但总是回来。

0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0

存在另一种跟踪ip的方法,可能是使用windows api或使用另一个indy组件?

实际上我正在使用delphi-xe和Windows 7。

3 个答案:

答案 0 :(得分:2)

我刚刚在我的博客上写了一个条目,可以帮助你。

Building a traceroute application with IP geolocation using delphi

答案 1 :(得分:1)

跟踪基本上是基于发送以TTL为1开始的ICMP数据包并将其增加直到到达目的地。因为每个路由器减少了TTL,当它达到0时,错误被返回给调用者,它可以用于跟踪“路由”数据包。请注意,防火墙不能阻止ICMP协议的工作。 ICMP是一种在IP上运行的协议,就像TCP一样。 使用TCP。您可以使用ICMP编写traceroute实用程序。但Windows tracert实用程序是否适用于您的系统?

答案 2 :(得分:0)

您使用的是哪个版本的Indy?目前的版本是10.5.8。