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

如何以程式測試Ping IP,網址回應值

尚未結案
cleanwater
一般會員


發表:5
回覆:8
積分:2
註冊:2002-12-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-24 22:15:19 IP:61.219.xxx.xxx 未訂閱
各位先進! 在維護的過程中, 常遇到網路連線有問題 想寫一個能偵測網路連線狀況及自動判別可能的故障情形 預計方法如下: 1. 送出類似ping的功能至某一另內部網點 , 取得其回應值 判別內部網路是否暢通 2. 再送一ping值至網際網路上實體IP , 取得其回應值 判別外部網路是否暢通 3. 測ping值至網際網路上Web Name, 取得其回應值 判別DNS運作是否正常 不知在Indy中或Delphi本身即有可達成此方法的功能或函數
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-25 00:25:38 IP:203.204.xxx.xxx 未訂閱
用 ShellExecute 去執行 ping 命令, 將結果重導到文字檔案, 讀取文字檔案分析即可 ping 192.168.1.1 > result.txt ping 168.95.1.1 >> result.txt ping www.hinet.net >> result.txt ********************* 如果您滿意答案,請結案 *********************
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-25 20:32:17 IP:211.22.xxx.xxx 未訂閱
在IndyClient頁面裡有個IdICMPClient,裡面就有PING的方法,Delphi線上說明很清楚! ----------------------------------------------- Creation is the fundation of promotion.
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-25 21:29:49 IP:220.131.xxx.xxx 未訂閱
  function IsIPPresent: Boolean;
  type
    TaPInAddr = Array[0..10] of PInAddr;
    PaPInAddr = ^TaPInAddr;
  var
    phe: PHostEnt;
    pptr: PaPInAddr;
    Buffer: Array[0..63] of Char;
    I: Integer;
    GInitData: TWSAData;
    IP: String;
    FCurrentIP : String;       {<--RLM Diagnostics}
    FpCurrHostEnt : PHostEnt;  {<--RLM Diagnostics}
  begin
    WSAStartup($101, GInitData);
    Result := False;
    GetHostName(Buffer, SizeOf(Buffer));
    phe := GetHostByName(buffer);
    FpCurrHostEnt := phe;
    if phe = nil then Exit;
    pPtr := PaPInAddr(phe^.h_addr_list);
    I := 0;
    while pPtr^[I] <> nil do
     begin
      IP := inet_ntoa(pptr^[I]^);
      Inc(I);
     end;
    FCurrentIP := IP;
    WSACleanup;
    Result := (IP <> '') and (IP <> '127.0.0.1');
  end;     
使用方法
  if IsIPPresent then
  begin
     showmessage('on line');      end
  else
  begin
     showmessage('network fail');
  end;
 
測試環境: win2000 pro delphi7 努力會更接近成功
------
努力會更接近成功
Ktop_Robot
站務副站長


發表:0
回覆:3511
積分:0
註冊:2007-04-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-04-26 13:50:46 IP:000.000.xxx.xxx 未訂閱
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。

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