2

IPのルートをトレースする必要があります。実際には、ユニットのTIdTraceRouteindyコンポーネントを使用しています。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;

しかし、常に戻ります。

0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0
0.0.0.0

おそらくWindows APIを使用するか、別のインディコンポーネントを使用して、IPをトレースする別の方法はありますか?

実際、私はdelphi-xeとWindows 7を使用しています。

4

3 に答える 3

2

ブログにエントリを書きましたが、それはあなたを助けることができます.

Building a traceroute application with IP geolocation using delphi

于 2010-11-17T13:58:18.583 に答える
1

トレースは基本的に、TTL 1 で始まり、宛先に到達するまで増加する ICMP パケットの送信に基づいています。各ルーターは TTL を減らし、0 に達すると発信者にエラーが返されるため、「ルート」パケットの追跡に使用できます。ICMP プロトコルを機能させるには、ファイアウォールによって停止されないように注意してください。ICMP は、TCP と同様に IP 上で実行されるプロトコルです。TCP を使用しません。ICMP を使用するだけで traceroute ユーティリティをコーディングできます。しかし、Windows の tracert ユーティリティはあなたのシステムで動作しますか?

于 2010-11-14T17:48:44.100 に答える
0

使用している Indy のバージョンは? 現在のバージョンは 10.5.8 です。

于 2010-11-18T03:11:36.257 に答える