【问题标题】:how i can trace an IP using delphi我如何使用delphi跟踪IP
【发布时间】:2011-05-09 20:50:38
【问题描述】:

我需要跟踪一个 ip 的路由,实际上我正在使用来自idTraceRoute 单元的TIdTraceRoute 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。

【问题讨论】:

标签: delphi indy delphi-xe traceroute


【解决方案1】:

我刚刚在我的博客上写了一篇文章,可以帮助你。

Building a traceroute application with IP geolocation using delphi

【讨论】:

    【解决方案2】:

    Trace 基本上基于发送以 1 为 TTL 的 ICMP 数据包并增加它直到到达目的地。因为每个路由器都会减少 TTL,当它达到 0 时,会向调用者返回一个错误,它可以用来跟踪“路由”数据包所采用的情况。注意 ICMP 协议不能被防火墙阻止。 ICMP 是一种在 IP 上运行的协议,就像 TCP 一样。它使用 TCP。您可以仅使用 ICMP 编写 traceroute 实用程序。但是 Windows tracert 实用程序可以在您的系统上运行吗?

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2012-01-01
        • 2012-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-13
        • 1970-01-01
        相关资源
        最近更新 更多