C++ 网络连通性检测的实现方法

C++ 网络连通性检测的实现方法

有时程序需要保持和某个指定网络的连通,有人的情况下我们直接用ping命令查看即可,然而程序自身检测会稍微麻烦一点。

实现思路如下:

用程序打开控制台->运行ping命令,并指定控制台返回值写入到文件中->分析文件,得到ping命令返回状态->得到网络连通情况

代码如下:

#include <windows.h>
#include <stdio.h>
#include <string>
using namespace std; 

bool AnalysisFile()
{
  bool rState;//返回状态
  FILE *file;
  char ln[80];
  fopen_s(&file, "returnpingdata.txt", "r"); 

  fgets(ln, 80, file);//读入空行,舍弃
  fgets(ln, 80, file);//读入ping信息,舍弃
  fgets(ln, 80, file);//读入ping对象返回值,用来分析 

  string data = ln;
  int iPos = data.find("=");
  data = data.substr(iPos+1,3);//截取字符串返回字节数
  int n = atoi(data.c_str());
  rState = n > 0;
  fclose(file);
  return rState;
}
void main()
{
  // -n 1指定发送1位数据,-w
  // 1000指定超过1000ms为超时
  // >returnpingdata.txt指定命令行返回值输出到returnpingdata.txt文件中
  char *cmdstr= "cmd /c ping www.baidu.com -n 1 -w 1000 >returnpingdata.txt";
  WinExec(cmdstr, SW_HIDE);
  Sleep(1000);//等待1000ms
  bool returndata = AnalysisFile();//分析命令行返回文件,得到网络连接情况
  if (returndata==true)
  {
    printf("网络连接成功\n");
  }
  else
  {
    printf("网络连接失败\n");
  }
  getchar();
}

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • C++中Socket网络编程实例详解

    C++中Socket网络编程实例详解 现在几乎所有C/C++的后台程序都需要进行网络通讯,其实现方法无非有两种:使用系统底层socket或者使用已有的封装好的网络库.本文对两种方式进行总结,并介绍一个轻量级的网络通讯库ZeroMQ.  1.基本的Scoket编程 关于基本的scoket编程网络上已有很多资料,作者在这里引用一篇文章中的内容进行简要说明. 基于socket编程,基本上就是以下6个步骤: 1.socket()函数 2.bind()函数 3.listen().connect()函数 4

  • C++设置系统时间及系统时间网络更新的方法

    本文实例讲述了C++设置系统时间及系统时间网络更新的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: //根据返回的时间设置系统时间 void setTimeFromTP(ULONG ulTime) {      FILETIME ft;      SYSTEMTIME st;        //将基准时间转换成windows文件时间      st.wYear = 1900;      st.wMonth = 1;      st.wDay = 1;      st.wHo

  • C++实现获取IP、子网掩码、网关、DNS等本机网络参数的方法

    本文以一个完整实例形式介绍了C++实现获取IP.子网掩码.网关.DNS等本机网络参数的方法,供大家参考,具体的完整实例如下: #pragma comment(lib,"Ws2_32.lib") #include <Iphlpapi.h> #pragma comment(lib, "Iphlpapi.lib") using namespace std; typedef struct tagNetworkCfg { char szIP[18]; char s

  • C++ 网络编程 总结

    第一次用C++写程序,对C++ 只是菜鸟级别的,倒是对C#很熟悉.两者有很大的相似性.但也有不同. 首先写了一个网络通讯用的小的MFC程序.发现 (1)MFC写界面真的好麻烦呀.用C#写的tab 分分钟搞定的事,用C++害得我写了两天.关键是不熟练. 还有list control 控件的图标显示.  真是很麻烦 不过,由于最后的 detch() 函数执行后,就真正显示出来了.这些具体的小细节,一般在 书上都没有写. (2)用C++ 写类的特征,基本上与C#是相似的. 说一下网络编程的问题吧 1\

  • C++ 网络连通性检测的实现方法

    C++ 网络连通性检测的实现方法 有时程序需要保持和某个指定网络的连通,有人的情况下我们直接用ping命令查看即可,然而程序自身检测会稍微麻烦一点. 实现思路如下: 用程序打开控制台->运行ping命令,并指定控制台返回值写入到文件中->分析文件,得到ping命令返回状态->得到网络连通情况 代码如下: #include <windows.h> #include <stdio.h> #include <string> using namespace s

  • iOS 检测网络状态的两种方法

    一般有两种方式,都是第三方的框架,轮子嘛,能用就先用着,后面再优化. 一:Reachability 1.首先在AppDelegate.h添加头文件"Reachability.h",导入框架SystemConfiguration.frame. 2. 在AppDelegate.m中这样实现: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc

  • C# ping网络IP 实现网络状态检测的方法

    C# ping网络IP 实现网络状态检测的方法 public string GetHostNameByIp(string ip)  {  ip = ip.Trim();  if (ip == string.Empty)  return string.Empty;  try  {  // 是否 Ping 的通  if (this.Ping(ip))  {  System.Net.IPHostEntry host = System.Net.Dns.GetHostEntry(ip);  return 

  • Android 对手机网络的检测和监听的方法示例

    此次分享内容 使用BroadcastReceiver广播接收器来接收网络状态(采用系统广播) BroadcastReceiver作为Android四大组件之一: Android:BroadcastReceiver广播接收器最全面解析 网络权限 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="andr

  • java如何测试网络连通性

    本文实例为大家分享了Java测试网络连通性的方法,供大家参考,具体内容如下 第一种方式:利用java运行时: Java代码 /** * test network * @param ip */ private void getNetworkState(String ip) { Runtime runtime = Runtime.getRuntime(); try { log.info("=================正在测试网络连通性ip:"+ip); Process process

  • 纵谈网络加密及解密技术方法

    一.为Windows系统文件夹加密 说起来每个人都会有一些不乐意被人知道的隐私,比如工作计划.个人信息等等,为了保护这些秘密,加密软件便成了许多人的首选.不过网上流行的加密软件基本上都是对文件或文件夹直接进行加密处理,所以在文件较大或文件很多的情况下就需要花费较多的时间,而且当要使用这些文件的时候,还需要对其进行解密,使用完毕以后,又要重新加密,十分麻烦.有没有既能加密,又能像普通文件一样方便使用的工具呢?当然有,实际上利用Windows自带的功能就能满足您这个要求. 1.文件加密 (1)在Wi

  • Oracle字符函数应用检测汉字的方法

    -- 验证是否包含汉字 create table test(a varchar2(10)); insert into test values('鸟'); insert into test values('深刻'); insert into test values('aaa'); insert into test values('bbb'); insert into test values('b鸟bb'); SELECT * FROM TEST; -- 对于全角字符,ascii值的范围是\uFF0

  • PHP判断网络文件是否存在的方法

    本文实例讲述了PHP判断网络文件是否存在的方法.分享给大家供大家参考.具体实现方法如下: $file = "http://www.jb51.net/demo/file_exists.zip"; $fileExists = @file_get_contents($file,null,null,-1,1) ? true : false; if($fileExists){ echo "File Exists!"; }else{ echo "Sorry, we c

  • php实现html标签闭合检测与修复方法

    本文实例讲述了php实现html标签闭合检测与修复方法.分享给大家供大家参考.具体如下: html标签闭合检测与修复,说的有点大 , 并没有考虑的很完整,没有使用正则表达式, 适用于html文件中只有开始标签没有结束标签, 是有结束标签没有开始标签的情况.标签闭合的位置需要根据需求调整 <?php $str = ' <div data="<li></li>"> <img src="http://www.baidu.com/123

  • Android编程监听网络连接状态改变的方法

    本文实例讲述了Android编程监听网络连接状态改变的方法.分享给大家供大家参考,具体如下: BroadcastReceiver public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub //Toast.makeText(context, intent

随机推荐