网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 程序设计-> 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...
    ·个性凸现的动画 特技效果