我需要跟踪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和Windows7。
发布于 2010-11-17 21:58:19
我刚刚在我的博客上写了一篇文章,它可以帮助你。
Building a traceroute application with IP geolocation using delphi
发布于 2010-11-15 01:48:44
跟踪基本上是基于发送ICMP数据包,从TTL 1开始,然后增加它,直到到达目的地。因为每个路由器都会减小TTL,并且当TTL达到0时会向调用者返回一个错误,因此可以用它来跟踪数据包所采用的“路由”。请注意,要工作,ICMP协议不能被防火墙阻止。ICMP是一个运行在IP之上的协议,就像TCP一样。It 不使用TCP。您可以只使用ICMP编写traceroute实用程序。但是Windows tracert实用程序能在您的系统上工作吗?
发布于 2010-11-18 11:11:36
您使用的是哪个版本的Indy?当前版本为10.5.8。
https://stackoverflow.com/questions/4178398
复制相似问题