網站建設| 數據庫類| 圖形圖象| 程序設計| 現代辦公| 操作系統| 考試認證| 網絡技術| 軟件工程| 電腦相關| 文學作品
網站開發| 網頁制作| 操作系統| 圖象圖形| 考試認證| 數據庫類| 程序設計| 硬件技術| 現代辦公| 網絡技術| 笑話頻道
 
您的位置: 電腦書庫首頁-> 電腦文摘-> 程序設計-> C++Builder-> 用C++ Builder實現網絡連接檢測程

用C++ Builder實現網絡連接檢測程
作者:佚名 來源:InterNet 加入時間:2003-7-24
相關文章
  • C++ Builder構建算二十四點小游戲
  • 用C++ Builder實現桌布自動更新
  • 用C++ Builder開發多層數據庫應用程序
  • C++ Builder中消息處理過程及應用
  • 用C++ Builder創建數字簽名
  • C++ Builder下數據庫報表Master/Detail關系功能的實現
  • 相關書籍:
  • C++ Builder 5.0經典入門
  • C++ Builder 3 核心編程技術

  •   在Windows系統中,我們經常用Ping.exe來測試網絡的連通性。

      Ping的實現過程很簡單,該命令將引發IP層發送一個簡單的IP包,一般是32字節。而目的方收到這個包后,將源地址和目的地址變換一下,重新發送這個包即可,當然還要加一些超時機制。

      其實,我們也可用C++ Builder NetMaster中的NMEcho控件來實現網絡連接檢測功能。

      首先定義以下控件:

      三個Edit控件:一個用于接收遠程主機的IP地址或域名,一個用于接收用戶設置的超時機制的時間,一個用于設置端口號。

      兩個RichEdit控件:一個用于給遠程主機發送信息,一個用于接收來自遠程主機的信息。

      兩個CheckBox控件:用于用戶是否自己設定端口號。

      一個Button控件:用于執行測試。

      一個StatusBar控件:用于顯示應用程序的狀態。

      程序實現代碼如下:

      void __fastcall TForm1::Button1Click(TObject Sender)

      { //設置NMEcho控件的標準TCP/IP屬性

       NMEcho1-〉Host=Edit1-〉Text ;

       NMEcho1-〉TimeOut=StrToInt(Edit2-〉Text) ;

       if(CheckBox1-〉Checked)

         NMEcho1-〉Port=StrToInt(Edit3-〉Text);

       else

         NMEcho1-〉Port=7;

      //TCP/IP中Echo的默認端口號

      NMEcho1-〉ReportLevel=Status_Basic;

       NMEcho1-〉Connect(); //建立連接

       RichEdit2-〉Clear ();

       for(int i=0;i
      //RichEdit1用于給遠程主機發送信息

      RichEdit2-〉Text=RichEdit2-〉Text +NMEcho1-〉Echo(RichEdit1-〉Lines-〉

      Strings[i]);

       NMEcho1-〉Disconnect ();

      }

      注意:在調用NMEcho控件的Connect()方法時,應該確保在接收數據之前連接已經建立。


      當調用Connect()方法后,如果用戶輸入的是域地址而不是IP地址,且域名服務器成功地解析了這個域名,將觸發控件的OnHostResoved事件,在此事件的處理中,我們將解析成功的消息在狀態欄中顯示給用戶。具體實現代碼如下:

      void __fastcall TForm1::NMEcho1HostResolved(TComponent Sender)

      {

       StatusBar1-〉Panels-〉Items[0]-〉Text="Host Resolved!";    

      }

      如果用戶輸入的遠程主機不正確,將觸發控件的OnInvalidHost事件,在此事件的處理中,彈出對話框要求用戶重新輸入遠程主機的IP地址或域名地址,然后試圖與服務器重建連接。具體代碼如下:

      void __fastcall TForm1::NMEcho1InvalidHost(bool &&Handled)

      {

       AnsiString s;

       if(InputQuery("Invailid host!","Specify a new host:",s))

       {

         NMEcho1-〉Host=s;

         Handled=true;

       }    

      }

      建立連接后,將觸發控件的OnConnect事件,在此事件的處理中,我們將連接成功的消息在狀態欄中顯示給用戶。具體實現代碼如下:

      void __fastcall TForm1::NMEcho1Connect(TObject Sender)

      {

       StatusBar1-〉Panels-〉Items[0]-〉Text="Echo has connected host!";

        }

      如果在調用Connect()方法后,在超時時間仍然沒有與服務器連接,將觸發控件的OnConnectFailed事件,在此事件的處理中,我們將連接失敗的消息顯示給用戶。具體實現代碼如下:

      void __fastcall TForm1::NMEcho1ConnectionFailed(TObject Sender)

      {

      ShowMessage("Connection failed!");    

      }

      除了NMEcho控件可以實現以上功能外,NetMaster的NMDayTime、NMTime這兩個控件也能實現。方法與NMEcho控件一樣,區別是NMDayTime和NMTime這兩個控件不用首先調用Connect()方法,它們與服務器的連接是在使用DayTimeStr、TimeStr屬性時自動進行的.


    [文章錄入員:lpc]

    相關文章
  • C++ Builder構建算二十四點小游戲
  • 用C++ Builder實現桌布自動更新
  • 用C++ Builder開發多層數據庫應用程序
  • C++ Builder中消息處理過程及應用
  • 用C++ Builder創建數字簽名
  • C++ Builder下數據庫報表Master/Detail關系功能的實現
  • 相關書籍:
  • C++ Builder 5.0經典入門
  • C++ Builder 3 核心編程技術
  • 本站推薦內容

    近期主機類熱搜關鍵詞:
    美國服務器 美國服務器租用 海外服務器租用 國外服務器租用

    C++Builder
    C/C++/VC
    C++Builder
    Basic/VB類
    Delphi/Pascal
    Java編程
    FORTRAN
    其它
    電腦教程閱讀排行
    ·模擬鍵盤按鍵 自動輸入文字
    ·在C++Builer中多線程的實...
    ·C++ Builder構建算二十...
    ·C++ Builder中消息處理...
    ·用C++ Builder實現桌布...
    ·用C++ Builder實現網絡...
    ·用C++ Builder開發多層...
    ·用C++Builder 建立數據...
    ·用BCB開發有身份認證功能的Em...
    ·個性凸現的動畫 特技效果
    福建22选5号码走势图