2010-11-14 48 views
2

我需要跟蹤一個ip的路由,實際上我使用idTraceRoute單元的TIdTraceRoute indy組件。我怎麼可以跟蹤使用delphi的IP

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

+0

添加標籤'indy',問題在那裏 – 2010-11-14 18:17:44

+0

是的,有一個API可以避免Indy,請參考:http://msdn.microsoft.com/en-us/library/aa366051(VS.85).aspx – 2010-11-14 20:14:59

回答

1

軌跡基本上是基於ICMP報文開始爲1的TTL,並增加直到到達目的地。因爲每個路由器減少TTL,並且當它到達0時,返回給調用者的錯誤,它可以用於跟蹤包路由。請注意,工作ICMP協議不能由防火牆停止。 ICMP是一種運行在IP之上的協議,就像TCP一樣。它不是使用TCP。您可以使用ICMP對traceroute實用程序進行編碼。但是,Windows Tracert實用程序可以在您的系統上工作嗎?

0

您正在使用的印版?目前的版本是10.5.8。