`
jvtarena
  • 浏览: 16756 次
  • 性别: 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++编程环境中,检测网络连接是否正常是一个常见的任务,特别是在开发涉及网络通信的应用程序时。C++Builder是一个集成开发环境(IDE),专门用于编写C++应用,它提供了丰富的库和工具来支持网络编程。本项目就是...

    C++builder实现网络连接检查

    本篇将详细探讨如何利用C++Builder实现网络连接检查,主要通过ping命令进行。 首先,我们需要了解ping命令的工作原理。ping是一个网络诊断工具,它发送ICMP(Internet Control Message Protocol)回显请求到目标...

    c++神经网络函数拟合程序

    在函数拟合任务中,神经网络通过学习输入数据和对应的目标输出之间的关系,来构建一个能够准确预测新输入的函数。 这个C++神经网络程序可能包含以下关键组件: 1. **数据预处理**:在训练神经网络之前,数据通常...

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

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

    卷积神经网络lenet-5的c++实现

    卷积神经网络(CNN,Convolutional Neural Network)是一种深度...通过这个C++实现,你可以深入理解LENET-5的工作原理,并了解如何在实际项目中运用卷积神经网络。同时,这也提供了一个学习C++编程和深度学习的好机会。

    vc++ c++ c 软件自动升级程序源代码 在线自动升级功能 自动升级 源代码

    在线自动升级是指用户无需手动下载新版本的安装包,只需通过网络连接,软件就能自动检测并下载更新。这种功能通常依赖于后台服务,如HTTP或FTP服务器,来存储和分发新版本的软件。 4. **源代码实现**: 在VS2003...

    C++ 网络带宽测试源码

    本篇将详细讲解一款基于C++实现的网络带宽测试源码,该源码利用libevt库来执行测试,能够有效地检测上行和下行带宽。 **一、libevt库介绍** libevt(Event Library)是一个轻量级的C++事件处理库,常用于开发高...

    C++程序 端口扫描系统的程序设计

    在这个C++程序中,可能会实现其中的一种或多种扫描方式,以检测目标机器的网络服务状态。 TCP连接扫描是最直观的方法,它尝试与目标主机建立完整的TCP连接。如果目标端口开放,连接会成功;如果端口关闭,连接会被...

    Visual_C++网络程序设计实例详解 张越等

    作者张越等人通过丰富的实例,为读者详细阐述了如何利用Visual C++开发网络应用程序,涵盖了许多关键技术和实用技巧。 在本书中,作者首先会介绍网络编程的基础概念,包括TCP/IP协议栈的工作原理、套接字(Socket)...

    C++实现的BP神经网络算法实现奇偶检验运算

    **C++实现的BP神经网络算法实现奇偶检验运算** BP(Backpropagation)神经网络是一种广泛应用的人工神经网络学习算法,尤其在模式识别和函数逼近等问题中效果显著。本项目是使用C++语言实现的一个多层前向神经网络...

    vc++实现禁止上外网,但是能访问局域网的功能_国家为什么禁止外网

    在Windows系统中,使用VC++(Visual C++)编程语言可以实现这种特定的网络访问控制,即禁止计算机访问互联网,但允许其在局域网内部进行通信。下面将详细介绍如何实现这一功能。 首先,我们需要理解网络访问的基本...

    ATM机界面设计C++程序实现

    ATM机界面设计C++程序实现是一个典型的计算机科学项目,主要涵盖了C++编程语言和图形用户界面(GUI)设计。这个程序旨在模拟真实的ATM机操作,包括存款、取款、更改密码、查询余额以及修改个人信息等基本功能。在...

    网络安全课程设计C++实现的网络扫描器源码

    TCP扫描(也称为半开扫描或SYN扫描)通过发送TCP SYN包来检测目标是否在线,而UDP扫描则向目标发送无连接的UDP包,观察是否有回应。这两种扫描方式各有特点,适用于不同的场景。 6. **ICMP扫描** ICMP(Internet ...

    Windows连接wifi C++ Source

    3. **状态监测**:为了实现连接和断开检测,项目可能使用了`WlanQueryInterface`函数来查询Wi-Fi接口的状态,例如,检查当前是否已连接到指定的网络,或者网络连接是否中断。 4. **事件处理**:Windows提供了一种...

    c++程序实现c++代码相似度计算

    总结起来,"C++程序实现C++代码相似度计算"是一个涉及到字符串处理、抽象语法树构建和比较、相似度度量等多个方面的问题。通过这样的工具,开发者可以快速定位代码中的相似或重复部分,从而提升代码质量,降低维护...

    C++网络聊天室源代码

    这个聊天室程序实现了基本的在线交流功能,包括私聊、群聊、文件传输以及语音聊天,为用户提供了一种实时互动的平台。 在C++编程中,MFC是一个重要的工具集,它是Microsoft为Windows应用程序设计的一套类库,简化了...

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

    本示例提供了一个VC++实现的程序,它能够检测Android设备是否已通过USB连接到个人计算机(PC)。这个小demo的核心是利用C++编程语言,通过创建管道(pipe)通信的方式与ADB(Android Debug Bridge)进行交互。 首先...

    websocket测试程序 C++实现

    总之,这个项目展示了如何使用C++和MFC来实现一个WebSocket服务器,通过这样的实践,开发者可以深入理解网络通信和GUI编程,提升自己的技能。在实际应用中,还可以根据需要添加更多的功能,如身份验证、权限控制等,...

    c++写的 arp 探测程序

    C++ ARP探测程序则是实现这一功能的软件工具,它可以用来检测网络中的设备状态,查找网络连接问题,或者进行网络嗅探。 在南开大学的网络作业中,学生被要求使用C++编写一个控制台程序,实现双线程功能。这意味着...

Global site tag (gtag.js) - Google Analytics