利用curl lib 检测计算机联网状态

简介:
一个项目需要对用户的计算机进行联网检测,判断是否正连接着互联网。
一般有两个办法,一是判断本地连接的ip是否为 "0.0.0.0"
如果是"0.0.0.0"表示没有联网,但是如果用户自己设定了IP地址,而没有连接互联网的话,这个办法基本无效.
 
还有一个办法就是类似于 ping 的方法,向服务端某个文件发出获取请求,根据返回值来判断用户是否连接了互联网。
 
以下是代码:
 
//检查联网状态 
int UpdateShareFunction::CheckIsNetWorking() 

     //创建curl对象 
    CURL *curl; 
     //创建curlcode对象 
    CURLcode res; 
 
    curl = curl_easy_init(); 
     if(curl) { 
         //设置一个请求文件地址 
        curl_easy_setopt(curl, CURLOPT_URL,  "http://www.xxxx.tv/release/remote.update"); 
        //执行请求操作,将返回值交给res 
        res = curl_easy_perform(curl); 
        //res=0的情况表示接收到信息,反之则没有收到信息 
        if(res!=0) 
        { 
             //没有联网 
             return false
        } 
        else 
        { 
             //已经联网 
             return true
 
        } 
        /* 释放资源 */ 
        curl_easy_cleanup(curl); 
    } 
    return false
}
 
根据这个函数整合了一个软件自动更新代码:
 
void ilcdUpdateAwokeMain::Init() 

         //创建UpdateShareFunction实例 
        UpdateShareFunction myUpdateShareFunction; 
         char locver[10]; 
         char nextVersionStr[10]; 
         //拿到本地版本 
        myUpdateShareFunction.GetLocalVersionStr(locver); 
         //拿到远程版本 
        myUpdateShareFunction.GetNextVersionStr(locver,nextVersionStr); 
 
        wxString locversion; 
        wxString nextversion; 
        wxString showVersion; 
 
        locversion=locversion.FromUTF8(locver); 
        locversion.append(wxT( "---->升级到---->")); 
        nextversion=locversion.FromUTF8(nextVersionStr); 
        locversion.append(nextversion); 
        m_listBox1->Append(locversion); 
        m_listBox1->Select(0); 
}
本文转自阿汐 51CTO博客,原文链接:http://blog.51cto.com/axiii/123149,如需转载请自行联系原作者
相关文章
|
12月前
|
Linux
【Linux】System V信号量详解以及semget()、semctl()和semop()函数讲解
System V信号量的概念及其在Linux中的使用,包括 `semget()`、`semctl()`和 `semop()`函数的具体使用方法。通过实际代码示例,演示了如何创建、初始化和使用信号量进行进程间同步。掌握这些知识,可以有效解决多进程编程中的同步问题,提高程序的可靠性和稳定性。
602 19
|
9月前
|
人工智能 IDE 测试技术
通义灵码2.0 - AI 程序员: AI 编程新时代的卓越助力
通义灵码是一款强大的AI编程助手,尤其在单元测试自动生成方面表现出色。它通过简化操作流程,快速生成覆盖广泛、质量较高的测试用例,支持直接编译与运行,显著提升开发效率。相比人工编写,通义灵码能大幅缩短时间成本,并更全面地覆盖边界和异常情况,但特定业务逻辑仍需人工补充。作为开发者的好帮手,它助力高效完成高质量单元测试,推动软件开发迈向新台阶。
26936 84
|
5G 网络架构
Wi-Fi的工作原理详解
【8月更文挑战第31天】
3756 1
|
机器学习/深度学习 人工智能 弹性计算
阿里云GPU服务器全解析_GPU价格收费标准_GPU优势和使用说明
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等场景。作为亚太领先的云服务商,阿里云GPU云服务器具备高灵活性、易用性、容灾备份、安全性和成本效益,支持多种实例规格,满足不同业务需求。
2882 2
|
机器学习/深度学习 人工智能 自然语言处理
代替程序员?微软让 AI 学会了代码审查
代替程序员?微软让 AI 学会了代码审查
1138 0
|
存储 Linux 编译器
cmake的单目录和多目录的使用(Linux和Windows)
本文介绍了在Windows和Linux平台上使用CMake构建单目录和多目录项目的步骤,包括如何配置CMakeLists.txt文件以及如何生成和使用可执行文件、库文件。
587 2
|
缓存 NoSQL 算法
LRU算法与Caffeine、Redis中的缓存淘汰策略详解与比较
在实际应用中,我们需要考虑数据访问模式、内存限制以及性能需求等因素来选择最合适的缓存淘汰策略。通过深入了解LRU算法及其在不同缓存库中的应用,我们可以更好地优化我们的应用程序的性能。
833 1
|
存储 JavaScript 前端开发
vue使用navigator.mediaDevices.getUserMedia调用相机功能
vue使用navigator.mediaDevices.getUserMedia调用相机功能
2568 0
|
移动开发 Unix 网络安全
Python的Pexpect详解 [图片]
Python的Pexpect详解 [图片]
|
Prometheus 监控 Kubernetes
Grafana 系列 - 统一展示 -1- 开篇
Grafana 系列 - 统一展示 -1- 开篇