利用C++ Builder实现网络连接检测程序(转)
2011-07-22 14:52
477 查看
在Windows系统中,我们经常用Ping.exe来测试 在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->Lines->Count;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属性时自动进行的。
本篇文章来源于 黑基网-中国最大的网络安全站点 原文链接:http://www.hackbase.com/lib/2006-10-17/14455.html
本篇文章来源于 黑基网-中国最大的网络安全站点 原文链接:http://www.hackbase.com/lib/2006-10-17/14455.html
相关文章推荐
- 用C++ Builder实现网络连接检测程序
- C++ Builder实现网络连接检测程序
- GTK 程序 检测 网线是否连接 本地网络状态 C语言实现
- 如何利用C++ Builder 5.0 实现屏幕保护程序的开发
- 利用函数计算实现网络游戏或视频直播中的敏感词检测
- 关于“如何检测节点网络中是否存在闭环之java实现”的程序bug修复
- 利用SqlHelper.cs实现Web程序与数据库的连接
- js实现检测网络是否连接的功能
- C# 网络营销 - c#可以实现连接和断开宽带的拨号程序吗?
- 利用SqlHelper.cs实现Web程序与数据库的连接
- iOS开发 - Swift实现检测网络连接状态及网络类型
- 利用ping命令检测网络的Shell程序
- 今天可怜!我想做一个控制网络连接的程序,不管用什么语言都行,只要实现网络断开与连接!
- iOS开发 - Swift实现检测网络连接状态及网络类型
- 如何利用 任务计划程序 实现计算机重启后运行特定程序(网络方面)
- CDMA 无线数据模块网络连接程序的设计与实现
- 无NAT功能三层交换网络中利用远程与路由访问服务实现外网连接
- 利用tensorflow实现神经网络卷积层、池化层、全连接层
- 编写多线程网络检测程序的简单实现
- 利用SqlHelper.cs实现Web程序与数据库的连接