<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Traceroute mit ICMP (indy)]]></title><description><![CDATA[<p>hallo,</p>
<p>will einen ganz normalen traceroute durchführen (wie in der konsole).</p>
<p>habe folgendes dazu in einem delphi-forum gelesen:</p>
<blockquote>
<p>Es wird in einer schleife solange gepingt und der TTL (hop) immer um eines erhöht bis als Meldung ein rsEcho kommt.<br />
Wenn als Meldung rsErrorTTLExceeded kommt weiss Du das der Ping<br />
bei einem Router angekommen ist der dir seine eigene IP zurücksendet.</p>
<p>Naja, schaue dir das Demo einfach mal an.</p>
</blockquote>
<p>leider gibt es wohl beim bcb 6.0 prof kein example dazu, deshalb habe ich versucht, aus diesen angaben folgenden quelltext zu &quot;basteln&quot;.</p>
<pre><code class="language-cpp">ICMP-&gt;Host = Adresse;
  ICMP-&gt;TTL = 0;
  while(!rsEcho)
   {
    ICMP-&gt;TTL += 1;
    ICMP-&gt;Ping();
    Application-&gt;ProcessMessages();
   }
</code></pre>
<p>Zum Ausgeben im Memo, habe ich die Beispielsfunktion unter Indy &gt; Ping genommen:</p>
<pre><code class="language-cpp">void __fastcall TForm1::ICMPReply(TComponent *ASender,
      const TReplyStatus &amp;AReplyStatus)
{
    AnsiString sTime, result[5];

     // TODO: Check for error on ping reply (ReplyStatus-&gt;MsgType?)
     if(AReplyStatus.MsRoundTripTime == 0)
     {
          sTime = &quot;&lt;1&quot;;
     }
     else
     {
          sTime = &quot;=&quot;;
     }

     result[0] = IntToStr(AReplyStatus.BytesReceived);
     result[1] = AReplyStatus.FromIpAddress;
     result[2] = IntToStr((int)AReplyStatus.SequenceId);
     result[3] = IntToStr((int)AReplyStatus.TimeToLive);
     result[4] = sTime;
     result[5] = IntToStr(AReplyStatus.MsRoundTripTime);

     Memo1-&gt;Lines-&gt;Add(result[0] + &quot; bytes from &quot; + result[1] +
                            &quot;: icmp_seq=&quot; + result[2] + &quot; ttl=&quot; + result[3] +
                            &quot; time&quot; + result[4] + result[5] + &quot; ms&quot;);

}
</code></pre>
<p>in der ausgabe werden wahrscheinlich die areplystatus.xxxxxx nicht stimmen (weil ein traceroute sieht ja anders aus) - die frage ist nur, wie schaffe ich es dann mit dieser indykomponenter (oder alternative?) ein traceroute zu erzeugen.</p>
<p>grüße</p>
<p>hagbard</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/84695/traceroute-mit-icmp-indy</link><generator>RSS for Node</generator><lastBuildDate>Thu, 02 Jul 2026 22:21:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/84695.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 01 Sep 2004 16:06:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Traceroute mit ICMP (indy) on Wed, 01 Sep 2004 16:06:47 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>will einen ganz normalen traceroute durchführen (wie in der konsole).</p>
<p>habe folgendes dazu in einem delphi-forum gelesen:</p>
<blockquote>
<p>Es wird in einer schleife solange gepingt und der TTL (hop) immer um eines erhöht bis als Meldung ein rsEcho kommt.<br />
Wenn als Meldung rsErrorTTLExceeded kommt weiss Du das der Ping<br />
bei einem Router angekommen ist der dir seine eigene IP zurücksendet.</p>
<p>Naja, schaue dir das Demo einfach mal an.</p>
</blockquote>
<p>leider gibt es wohl beim bcb 6.0 prof kein example dazu, deshalb habe ich versucht, aus diesen angaben folgenden quelltext zu &quot;basteln&quot;.</p>
<pre><code class="language-cpp">ICMP-&gt;Host = Adresse;
  ICMP-&gt;TTL = 0;
  while(!rsEcho)
   {
    ICMP-&gt;TTL += 1;
    ICMP-&gt;Ping();
    Application-&gt;ProcessMessages();
   }
</code></pre>
<p>Zum Ausgeben im Memo, habe ich die Beispielsfunktion unter Indy &gt; Ping genommen:</p>
<pre><code class="language-cpp">void __fastcall TForm1::ICMPReply(TComponent *ASender,
      const TReplyStatus &amp;AReplyStatus)
{
    AnsiString sTime, result[5];

     // TODO: Check for error on ping reply (ReplyStatus-&gt;MsgType?)
     if(AReplyStatus.MsRoundTripTime == 0)
     {
          sTime = &quot;&lt;1&quot;;
     }
     else
     {
          sTime = &quot;=&quot;;
     }

     result[0] = IntToStr(AReplyStatus.BytesReceived);
     result[1] = AReplyStatus.FromIpAddress;
     result[2] = IntToStr((int)AReplyStatus.SequenceId);
     result[3] = IntToStr((int)AReplyStatus.TimeToLive);
     result[4] = sTime;
     result[5] = IntToStr(AReplyStatus.MsRoundTripTime);

     Memo1-&gt;Lines-&gt;Add(result[0] + &quot; bytes from &quot; + result[1] +
                            &quot;: icmp_seq=&quot; + result[2] + &quot; ttl=&quot; + result[3] +
                            &quot; time&quot; + result[4] + result[5] + &quot; ms&quot;);

}
</code></pre>
<p>in der ausgabe werden wahrscheinlich die areplystatus.xxxxxx nicht stimmen (weil ein traceroute sieht ja anders aus) - die frage ist nur, wie schaffe ich es dann mit dieser indykomponenter (oder alternative?) ein traceroute zu erzeugen.</p>
<p>grüße</p>
<p>hagbard</p>
]]></description><link>https://www.c-plusplus.net/forum/post/597143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/597143</guid><dc:creator><![CDATA[hagbard_]]></dc:creator><pubDate>Wed, 01 Sep 2004 16:06:47 GMT</pubDate></item><item><title><![CDATA[Reply to Traceroute mit ICMP (indy) on Wed, 01 Sep 2004 18:49:52 GMT]]></title><description><![CDATA[<p>Der Beitrag bezog sich sicherlich auf die Beispiele von der <a href="http://www.indyproject.org/" rel="nofollow">Indy-Website</a> (Downloads -&gt; Indy 8).</p>
<pre><code class="language-cpp">void __fastcall TfrmMain::acTraceExecute(TObject *Sender)
{
 char *s=new char[256];//used because BCB4 AnsiString Sprintf is different than bcb5 sprintf
  int TTL;
  bool Reached;
 TListItem* aItem;

  TTL = 0;
  Reached = false;
  lvTrace-&gt;Items-&gt;Clear();
  do
   { TTL++;
    IdIcmpClient-&gt;Host = ResolvedHost;
    IdIcmpClient-&gt;TTL = TTL;
    IdIcmpClient-&gt;ReceiveTimeout = 5000;
    IdIcmpClient-&gt;Ping();
    aItem =lvTrace-&gt;Items-&gt;Add();
    aItem-&gt;SubItems-&gt;Clear();
    aItem-&gt;SubItems-&gt;Append(AnsiString(TTL));
    switch (IdIcmpClient-&gt;ReplyStatus.ReplyStatusType)
    {
    case  rsEcho:
    {
        aItem-&gt;SubItems-&gt;Add(IdIcmpClient-&gt;ReplyStatus.FromIpAddress);
        sprintf(s,&quot;Reached in : %d ms&quot;,IdIcmpClient-&gt;ReplyStatus.MsRoundTripTime);
        aItem-&gt;SubItems-&gt;Add(s);
        Reached = true;
        break;
     }
     case rsError:
        {
        aItem-&gt;SubItems-&gt;Add(IdIcmpClient-&gt;ReplyStatus.FromIpAddress);
        aItem-&gt;SubItems-&gt;Add(&quot;Unknown error.&quot;);
        break;
        }
     case rsTimeOut:
     {
        aItem-&gt;SubItems-&gt;Add(&quot;?.?.?.?&quot;);
        aItem-&gt;SubItems-&gt;Add(&quot;Timed out.&quot;);
        break;
     }
     case rsErrorUnreachable:
     { aItem-&gt;SubItems-&gt;Add(IdIcmpClient-&gt;ReplyStatus.FromIpAddress);
       sprintf(s,&quot;Destination network unreachable %d&quot;,IdIcmpClient-&gt;ReplyStatus.MsRoundTripTime);
       aItem-&gt;SubItems-&gt;Add(s);
        break;
     }
      case rsErrorTTLExceeded:
        {
        aItem-&gt;SubItems-&gt;Add(IdIcmpClient-&gt;ReplyStatus.FromIpAddress);
        sprintf(s,&quot;TTL=%d&quot;,IdIcmpClient-&gt;ReplyStatus.TimeToLive);
        aItem-&gt;SubItems-&gt;Add(s);
        break;
      }
    }; // case
    Application-&gt;ProcessMessages();
   }
  while  ((!Reached)&amp;&amp; (TTL &lt; StrToInt(seMaxHops-&gt;Text))&amp;&amp;(!Stopped));
delete []s;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/597255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/597255</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Wed, 01 Sep 2004 18:49:52 GMT</pubDate></item><item><title><![CDATA[Reply to Traceroute mit ICMP (indy) on Wed, 01 Sep 2004 21:20:46 GMT]]></title><description><![CDATA[<p>vielen dank für das posting!</p>
<p>jetzt noch eine frage, ich komme eine fehlermeldung bei folgender zeile:</p>
<pre><code class="language-cpp">aItem =lvTrace-&gt;Items-&gt;Add();
</code></pre>
<p>das problem ist, ich weiß nicht was lvTrace ist?<br />
Dachte, es sei eine Listbox, mit dem lieg ich aber wohl falsch (wegen der fehlermeldung).</p>
<p>danke.</p>
<p>grüße</p>
<p>hagbard</p>
]]></description><link>https://www.c-plusplus.net/forum/post/597374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/597374</guid><dc:creator><![CDATA[hagbard_]]></dc:creator><pubDate>Wed, 01 Sep 2004 21:20:46 GMT</pubDate></item><item><title><![CDATA[Reply to Traceroute mit ICMP (indy) on Wed, 01 Sep 2004 21:35:17 GMT]]></title><description><![CDATA[<p>Eigentlich wollte ich gar keinen Code posten, das hab ich nun davon. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Lad dir doch die Beispiele herunter!</p>
<p>lvTrace ist ein ListView.</p>
<p>PS. Falls das nicht klar geworden war: o.g. Code stammt aus besagten Beispielen von der Website.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/597385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/597385</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Wed, 01 Sep 2004 21:35:17 GMT</pubDate></item><item><title><![CDATA[Reply to Traceroute mit ICMP (indy) on Thu, 02 Sep 2004 08:08:44 GMT]]></title><description><![CDATA[<p>vielen Dank,</p>
<p>ich sollte auch am Abend mein Hirn einschalten ;).<br />
solche mods würd ich mir in so manch anderem forum auch wünschen!</p>
<p>grüße</p>
<p>hagbard</p>
]]></description><link>https://www.c-plusplus.net/forum/post/597571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/597571</guid><dc:creator><![CDATA[hagbard_]]></dc:creator><pubDate>Thu, 02 Sep 2004 08:08:44 GMT</pubDate></item></channel></rss>