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

本文介绍了一种软件联网检测的方法,并提供了一个自动更新代码示例。联网检测通过向特定地址发起请求并根据响应判断是否在线。自动更新部分展示了如何获取本地及远程版本号,并在界面上显示版本信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个项目需要对用户的计算机进行联网检测,判断是否正连接着互联网。
一般有两个办法,一是判断本地连接的ip是否为 "0.0.0.0"
如果是"0.0.0.0"表示没有联网,但是如果用户自己设定了IP地址,而没有连接互联网的话,这个办法基本无效.
 
还有一个办法就是类似于 ping 的方法,向服务端某个文件发出获取请求,根据返回值来判断用户是否连接了互联网。
 
以下是代码:
 
InBlock.gif//检查联网状态 
InBlock.gifint UpdateShareFunction::CheckIsNetWorking() 
InBlock.gif
InBlock.gif    //创建curl对象 
InBlock.gif    CURL *curl; 
InBlock.gif    //创建curlcode对象 
InBlock.gif    CURLcode res; 
InBlock.gif 
InBlock.gif    curl = curl_easy_init(); 
InBlock.gif    if(curl) { 
InBlock.gif        //设置一个请求文件地址 
InBlock.gif        curl_easy_setopt(curl, CURLOPT_URL, "http://www.xxxx.tv/release/remote.update"); 
InBlock.gif        //执行请求操作,将返回值交给res 
InBlock.gif        res = curl_easy_perform(curl); 
InBlock.gif        //res=0的情况表示接收到信息,反之则没有收到信息 
InBlock.gif        if(res!=0) 
InBlock.gif        { 
InBlock.gif             //没有联网 
InBlock.gif             return false
InBlock.gif        } 
InBlock.gif        else 
InBlock.gif        { 
InBlock.gif             //已经联网 
InBlock.gif             return true
InBlock.gif 
InBlock.gif        } 
InBlock.gif        /* 释放资源 */ 
InBlock.gif        curl_easy_cleanup(curl); 
InBlock.gif    } 
InBlock.gif    return false
InBlock.gif}
 
根据这个函数整合了一个软件自动更新代码:
 
InBlock.gifvoid ilcdUpdateAwokeMain::Init() 
InBlock.gif
InBlock.gif        //创建UpdateShareFunction实例 
InBlock.gif        UpdateShareFunction myUpdateShareFunction; 
InBlock.gif        char locver[10]; 
InBlock.gif        char nextVersionStr[10]; 
InBlock.gif        //拿到本地版本 
InBlock.gif        myUpdateShareFunction.GetLocalVersionStr(locver); 
InBlock.gif        //拿到远程版本 
InBlock.gif        myUpdateShareFunction.GetNextVersionStr(locver,nextVersionStr); 
InBlock.gif 
InBlock.gif        wxString locversion; 
InBlock.gif        wxString nextversion; 
InBlock.gif        wxString showVersion; 
InBlock.gif 
InBlock.gif        locversion=locversion.FromUTF8(locver); 
InBlock.gif        locversion.append(wxT("---->升级到---->")); 
InBlock.gif        nextversion=locversion.FromUTF8(nextVersionStr); 
InBlock.gif        locversion.append(nextversion); 
InBlock.gif        m_listBox1->Append(locversion); 
InBlock.gif        m_listBox1->Select(0); 
InBlock.gif}
本文转自阿汐 51CTO博客,原文链接:http://blog.51cto.com/axiii/123149,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值