2010-11-14 64 views
2

j'ai besoin de tracer la route d'un ip, en fait j'utilise le composant indy TIdTraceRoute de l'unité idTraceRoute.comment je peux tracer une adresse IP en utilisant delphi

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; 

mais toujours revenir.

0.0.0.0 
0.0.0.0 
0.0.0.0 
0.0.0.0 
0.0.0.0 
0.0.0.0 

existe une autre façon de tracer une IP peut-être en utilisant des fenêtres api ou en utilisant un autre composant indy?

en fait, je me sers delphi-et Windows 7. xe

+0

ajouter le tag 'indy', le problème est là –

+0

oui, il y a une API pour éviter Indy, consultez ici: http://msdn.microsoft.com/en-us/library/aa366051(VS.85).aspx –

Répondre

1

Trace est essentiellement basée sur l'envoi de paquets ICMP commençant par un TTL de 1 et de l'augmenter jusqu'à atteindre la destination. Parce que chaque routeur diminue la durée de vie, et quand il atteint 0 une erreur est renvoyée à l'appelant, il peut être utilisé pour suivre les prises de «route» prend. Notez que pour fonctionner, le protocole ICMP ne doit pas être arrêté par un pare-feu. ICMP est un protocole qui fonctionne sur IP, comme le fait TCP. Il ne pas utiliser TCP. Vous pouvez coder un utilitaire traceroute en utilisant simplement ICMP. Mais l'utilitaire Windows Tracert fonctionne-t-il sur votre système?

0

Quelle version de Indy que vous utilisez? La version actuelle est 10.5.8.