как я могу отследить IP с помощью Delphi - PullRequest
2 голосов
/ 14 ноября 2010

мне нужно отследить маршрут ip, на самом деле я использую TIdTraceRoute indy-компонент из idTraceRoute.

   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;

, но всегда возвращаюсь.* Существуют ли другие способы отслеживания IP-адресов, может быть, с помощью Windows API или другого компонента Indy?

На самом деле я использую Delphi-XE и Windows 7.

Ответы [ 3 ]

2 голосов
/ 17 ноября 2010

Я только что написал запись в своем блоге, которая может вам помочь.

Building a traceroute application with IP geolocation using delphi

1 голос
/ 14 ноября 2010

Трассировка в основном основана на отправке ICMP-пакетов, начиная с TTL, равного 1, и увеличивая его до достижения пункта назначения.Поскольку каждый маршрутизатор уменьшает TTL, и когда он достигает 0, вызывающей стороне возвращается ошибка, его можно использовать для отслеживания пакетов, которые «принимает» маршрут.Обратите внимание, что для работы протокол ICMP не должен быть остановлен брандмауэром.ICMP - это протокол, который работает поверх IP, как это делает TCP. не использует TCP.Вы можете написать утилиту traceroute, просто используя ICMP.Но работает ли в вашей системе утилита Windows tracert?

0 голосов
/ 18 ноября 2010

Какую версию Indy вы используете?Текущая версия 10.5.8.

...