`
jvtarena
  • 浏览: 16443 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

通过C++ 实现网络连接检测程序

    博客分类:
  • C++
阅读更多
广州达内作为达内集团60多家培训中的一个,已成为了广州IT培训的领头羊,通过标准化的培训,让实战少的学生完美蜕变成为软件开发职场精英人才,成功帮助学员收获名企offer。
  在Windows系统中,我们经常用Ping.exe来测试网络的连通性。

  Ping的实现过程很简单,该命令将引发IP层发送一个简单的IP包,一般是32字节。而目的方收到这个包后,将源地址和目的地址变换一下,重新发送这个包即可,当然还要加一些超时机制。

  其实,我们也可用C++ Builder NetMaster中的NMEcho控件来实现网络连接检测功能。

  首先定义以下控件:

  三个Edit控件:一个用于接收远程主机的IP地址或域名,一个用于接收用户设置的超时机制的时间,一个用于设置端口号。

  两个RichEdit控件:一个用于给远程主机发送信息,一个用于接收来自远程主机的信息。

  两个CheckBox控件:用于用户是否自己设定端口号。

  一个Button控件:用于执行测试。

  一个StatusBar控件:用于显示应用程序的状态。

  程序实现代码如下:

  void __fastcall TForm1::Button1Click(TObject   ender)

  { //设置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   ender)

  {

  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   ender)

  {

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

  }

  如果在调用Connect()方法后,在超时时间仍然没有与服务器连接,将触发控件的OnConnectFailed事件,在此事件的处理中,我们将连接失败的消息显示给用户。具体实现代码如下:

  void __fastcall TForm1::NMEcho1ConnectionFailed(TObject   ender)

  {

  ShowMessage("Connection failed!");

  }

  除了NMEcho控件可以实现以上功能外,NetMaster的NMDayTime、NMTime这两个控件也能实现。方法与NMEcho控件一样,区别是NMDayTime和NMTime这两个控件不用首先调用Connect()方法,它们与服务器的连接是在使用DayTimeStr、TimeStr属性时自动进行的.
知识就是力量,别人学用知识来赚钱的成本低,在达内学习到编程是铸造梦想的地方,如果你喜欢编程,这里,有我们共同语言,共同的故事,共同的梦想!
(责任编辑:广州达内转载于:http://www.gdtarena.com)
分享到:
评论

相关推荐

    C++检测网络连接是否正常

    此为C++BUILDER 项目源码,写此程序的目的在于测试两台计算机之间的网格是否连通正常,用户可通过修改目标计算机的IP地址、端口及连接时间进行指定测试,还可以发送相关的信息。

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

    其实,我们也可用C++ Builder NetMaster中的NMEcho控件来实现网络连接检测功能。  首先定义以下控件  三个Edit控件:一个用于接收远程主机的IP地址或域名,一个用于接收用户设置的超时机制的时间,一个用于设置...

    VC++实现通过adb检测android设备是否连接到usb

    一个小demo,使用c++检测是否有android连接到电脑。 实现方式是创建一对读写管道连接adb.exe和我们的程序。通过adb.exe 参数检测设备,我们程序来读取。

    毕业设计C/C++实现基于ESP32的环境检测器系统设计与实现源码.zip

    毕业设计C/C++实现基于ESP32的环境检测器系统设计与实现源码,内附详细开发文档,使用说明。 ESP32微型环境监测器,读取BME280温湿度等传感器数据,封装阿里云物联网平台MQTT连接,配置三元组直连,搭载实时操作...

    linux下自动连接wifi程序源码

    linux下自动连接wifi程序源码,程序自动检测系统无线网卡,根据用户提供的ssid和pwd连接wifi,并返回ip,最后输出程序执行时间。

    Visual C++ 程序开发范例宝典 源码 光盘 part2

    6.4 系统相关设置 cc实例173 获得Windows和System的路径 cc实例174 控制光驱的弹开与关闭 cc实例175 启动控制面板 cc实例176 为程序添加快捷键 6.5 系统监控 cc实例177 检测系统启动模式 cc实例178 ...

    串口测试程序 C++

    一个不错的 工具,专门用来测试 串口是否连通。可以测试看下,有帮助。专门为程序员打造。

    Visual C++程序开发范例宝典(PDF扫描版).part3

     实例231 断开SQLcServer数据库与其他应用程序的连接   cc实例232 在VisualcC++中执行事务   cc实例233 在程序中执行SQL脚本   cc实例234 利用SQL语句执行外围命令  第9章 SQL查询相关技术   9.1 ...

    Visual C++程序开发范例宝典(光盘) 第八部分

    Visual C++程序开发范例宝典配套光盘,因大小受限,所以分成8部分上传,必须全部下载才能正常解压! 第1章 窗体与界面设计 1.1 菜单应用实例 实例001 在系统菜单中添加菜单项 实例002 带图标的程序菜单 实例003...

    Visual C++程序开发范例宝典(PDF扫描版).part2

     实例231 断开SQLcServer数据库与其他应用程序的连接   cc实例232 在VisualcC++中执行事务   cc实例233 在程序中执行SQL脚本   cc实例234 利用SQL语句执行外围命令  第9章 SQL查询相关技术   9.1 ...

    C++网络爬虫项目

    搜索引擎的信息源来自于互联网网页,通过“网络爬虫” 将整个“互联网” 的 信息获取到本地,因为互联网页面中有相当大比例的内容是完全相同或者近似 重复的,“网页去重”模块会对此做出检测,并去除重复内容。 在...

    Visual c++案例开发集锦

    ActiveX连接数据库 ADO控制Access数据库 基于单文档的数据库浏览 用DAO在数据库中执行SQL语句 在程序中创建ODBC数据源 第五章 VC实现Flash动画播放 VC实现WAV文件播放器 创建CD播放器 利用VC实现OPENGL编程 用...

    基于C++实现的晶圆分拣检测系统后端API源码(含项目说明+sln及演示视频).zip

    基于C++实现的晶圆分拣检测系统后端API源码(含项目说明+sln及演示视频).zip 晶圆分拣检测系统后端API ## 一、项目介绍   硅片平整度检测系统控制软件视图部分和控制部分采用一定的消息机制进行通讯,控制...

    Visual C++程序开发范例宝典(光盘) 第四部分

    Visual C++程序开发范例宝典配套光盘,因大小受限,所以分成8部分上传,必须全部下载才能正常解压! 第1章 窗体与界面设计 1.1 菜单应用实例 实例001 在系统菜单中添加菜单项 实例002 带图标的程序菜单 实例003...

    ADO数据库连接类(C++实现)

    ADO(ActiveX Data Objects)一种程序对象,用于表示用户数据库中的数据结构和所包含的数据。在Microsoft Visual Basic编辑器中,可以使用ADO对象以及ADO的附加组件(称为Microsoft ADO Extensions for DLL and ...

    Visual C++数字图像 代码

    DImageProcess工程只需载入Bmp格式的文件,便可通过菜单实现各种处理算法, 需要强调一点,其只对256色格式的图片进行处理。 PixelFusion工程程序运行时,用户须载入两幅图片,其中全色图像选择给定的图片spot.bmp,...

    在C++程序中使用QML

    在C++程序中使用QML QML API是分为三个主类——QDeclarativeEngine, QdeclarativeComponent 与 QDeclarativeContext。QDeclarativeEngine 提供QML运行的环境,QdeclarativeComponent 封装了QML Documents 与...

    c语言c++项目源代码_c语言实现如果cmd中的ping.rar

    **C语言实现的CMD中PING.RAR功能资源介绍** 本文将为您介绍一个使用C语言编写的程序,该程序能够...通过使用此资源,用户可以轻松地在CMD环境中实现对RAR文件的PING测试,从而确保网络连接的稳定性和RAR文件的完整性。

Global site tag (gtag.js) - Google Analytics