首页 >> 读书频道 >> 电脑 >> 用C++ Builder实现网络连接检测程
 
· VC下编程实现3D文字
· propertyIsEn
· C++编程人员容易犯的1
· C++编程人员容易犯的1
· 扔掉Socket实现网络
· VC开发实例
· ping的源程序
· 可能是最快的算法alph
· Java编码规范
· 自己制作网页特效软件
· Delphi+Cell全
· 你的大写数字规范吗?
 
· 红楼梦:120回全本[清
· 常见图像文件格式详解
· 拉封丹寓言
· 电视剧《刁蛮公主》下载和
· 美容养颜手册
· 加油金顺剧情分集介绍完整
· 素质教育在美国
· 全唐诗卷四十六
· 韩剧《布拉格恋人》剧情介
· 夜航船[作者:明·张岱]
· 局外人[作者:韩·可爱淘
· 现场流行病学
 
· (出租)中动商场部分及写
· (出租)中动动漫基地&#
· 喜剧学院
· 《善德女王》剧情介绍
· 魔女18号 剧情
· 丑女无敌剧情介绍
· 魔女幼熙剧情介绍
· 龙游天下剧情介绍
· 震撼世界的七日剧情介绍
· 静静的白桦林剧情介绍
· 心情日记—老公今天我想对
· 旗舰剧情介绍
欢迎来到月影社区!如果您觉得这里不错,请推荐给您的朋友们。月影社区:http://wf66.com/

用C++ Builder实现网络连接检测程


查看有无更新版本

关键字:C/C++/VC 2006-9-22

 

在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);

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属性时自动进行的.

用C++ Builder实现网络连接检测程

[ 1 ]
用C++ Builder实现网络连接检测程 num

打印本页 关闭

关于我们版权声明本站导航友情连结作品演示 TOP↑