線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4157
推到 Plurk!
推到 Facebook!

如果說我要用IdIcmpClient來呈現PING的功能

答題得分者是:RaynorPao
tomas850
一般會員


發表:12
回覆:16
積分:5
註冊:2004-01-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-31 11:59:30 IP:61.222.xxx.xxx 未訂閱
如題,如果說我要用IdIcmpClient來呈現PING的功能, 但我在PING的時候,對方是未連線狀態。 我要一直PING到對方起來回應我為止。 我應該要如何做呢??
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-31 12:15:57 IP:203.73.xxx.xxx 未訂閱
引言: 如題,如果說我要用IdIcmpClient來呈現PING的功能, 但我在PING的時候,對方是未連線狀態。 我要一直PING到對方起來回應我為止。 我應該要如何做呢??
tomas850 你好:
(1)這裡有一個範例
   ><>
(>    < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=10003806&CC=223734"> -- Enjoy Researching & Developing --    發表人 - RaynorPao 於 2004/03/31  23:49:24
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
tomas850
一般會員


發表:12
回覆:16
積分:5
註冊:2004-01-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-31 18:57:51 IP:61.222.xxx.xxx 未訂閱
我試著去Run下載下來的原始碼。 會出現一個問題, 在IdIcmpClinet->Ping()這一行過不去耶! 我用的是Indy9.0.14版(今天去下載的) 錯誤的訊息是Too few parameters in call _fastcall TIdIcmpClient::Ping(AnsiString,unsigned short) 看起來是要在後面加二個參數才可以用。 是我Indy版本的問題嗎?我去翻書上的範例來看也沒有下參數......
shinnuei
一般會員


發表:32
回覆:48
積分:21
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-04 11:07:11 IP:61.221.xxx.xxx 未訂閱
奇怪了,我剛試了一下,很正常,完全不會有錯誤訊息… 我的 indy 也是 9.0.1.4。 不然你開一個新專案,再放上 Memo1,IdIcmpClient1,edtIP,btnPing 再貼上原本的程式碼,如下:
void __fastcall TForm1::btnPingClick(TObject *Sender)
{
   btnPing->Enabled=false;
   Memo1->Lines->Add("Pinging \"" edtIP->Text "\"...");
   try
   {
      IdIcmpClient1->ReceiveTimeout=1000;
      IdIcmpClient1->Host=edtIP->Text;
      for(int i=0; i<4; i  )
      {
         try
         {
            IdIcmpClient1->Ping();
            Application->ProcessMessages();
         }
         catch(Exception &e)
         {
            Memo1->Lines->Add("Request timed out.");
         }
      }
   }
   __finally
   {
      btnPing->Enabled=true;
   }
   Memo1->Lines->Add("End!");
   Memo1->Lines->Add("");
}
//---------------------------------------------------------------------------    void __fastcall TForm1::IdIcmpClient1Reply(TComponent *ASender,
      const TReplyStatus &AReplyStatus)
{
   AnsiString szReport;
   if(AReplyStatus.FromIpAddress=="0.0.0.0" && AReplyStatus.TimeToLive==0)
   {
      szReport="Request timed out.";
   }
   else
   {
      if(AReplyStatus.MsRoundTripTime==0)
      {
         szReport.sprintf("Reply from %s: bytes=%d time<1ms TTL=%d",
            AReplyStatus.FromIpAddress, AReplyStatus.BytesReceived,
            AReplyStatus.TimeToLive);
      }
      else
      {
         szReport.sprintf("Reply from %s: bytes=%d time=%dms TTL=%d",
            AReplyStatus.FromIpAddress, AReplyStatus.BytesReceived,
            AReplyStatus.MsRoundTripTime, AReplyStatus.TimeToLive);
      }
   }
   Memo1->Lines->Add(szReport);
}
tomas850
一般會員


發表:12
回覆:16
積分:5
註冊:2004-01-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-05 09:58:32 IP:61.222.xxx.xxx 未訂閱
Ping(AnsiString,unsigned short) 是我在輸入IdIcmpClient-> 之後帶出來的原型! 所以當我裡面是空白時會出問題..... 我試過8.X~9.X版都是一樣。 所以就在裡面隨便輸入二個參數給他。 例如:Ping("aaaa",0)。 結果是正確的,並不知道那個字串代表的是什麼東西。 是傳輸的內容??還是其它??
artist1002
高階會員


發表:2
回覆:155
積分:151
註冊:2002-09-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-05 14:01:00 IP:211.76.xxx.xxx 未訂閱
引言: Ping(AnsiString,unsigned short) 是我在輸入IdIcmpClient-> 之後帶出來的原型! 所以當我裡面是空白時會出問題..... 我試過8.X~9.X版都是一樣。 所以就在裡面隨便輸入二個參數給他。 例如:Ping("aaaa",0)。 結果是正確的,並不知道那個字串代表的是什麼東西。 是傳輸的內容??還是其它??
關於Ping的參數問題, 先參考函數宣告如下 void __fastcall Ping(AnsiString ABuffer, Word SequenceID); 看原型說故事的解釋是 第一個AnsiString是提供Icmp的Request內容存放的Buffer 第二個則是Icmp封包序號 (用來識別收到Reply的和傳出去的Request配對關係,才能算出Time) 附帶解釋: 第一個AnsiString 給一個AnsiString變數就可以了,內容不用,因為只是提供空間來存放Request Buffer. 第二個在ㄧ般情況下給0就可以了,因為IdIcmpClient會自己增加這個數字,給0的話就是採用內部的序號. 如果想要自己控制Request和Reply才需要自訂數值.
SENFO
一般會員


發表:13
回覆:22
積分:7
註冊:2006-07-10

發送簡訊給我
#7 引用回覆 回覆 發表時間:2006-09-22 09:19:25 IP:61.219.xxx.xxx 未訂閱

請問一下使用IdIcmpClient去ping的話好像不會在本機的arp表留下mac資料,因為我想要用ping之後再下arp指令取得某IP的mac,但是用IdIcmpClient都不會留下mac在arp表,請問有什麼改善方法嗎?

系統時間:2024-11-23 3:32:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!