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

简介:
一个项目需要对用户的计算机进行联网检测,判断是否正连接着互联网。
一般有两个办法,一是判断本地连接的ip是否为 "0.0.0.0"
如果是"0.0.0.0"表示没有联网,但是如果用户自己设定了IP地址,而没有连接互联网的话,这个办法基本无效.
 
还有一个办法就是类似于 ping 的方法,向服务端某个文件发出获取请求,根据返回值来判断用户是否连接了互联网。
 
以下是代码:
 
InBlock.gif //检查联网状态 
InBlock.gif int 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.gif void 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,如需转载请自行联系原作者
相关文章
|
2月前
|
安全 数据库 Python
蓝队自检工具 -- WindowsVulnScan
蓝队自检工具 -- WindowsVulnScan
22 0
|
监控 网络协议 Linux
Linux利用nc命令脚本批量检测服务器指定端口是否开放
nc命令脚本批量检测服务器指定端口是否开放
933 0
Linux利用nc命令脚本批量检测服务器指定端口是否开放
|
运维 安全 Linux
新手必会的Linux常用系统状态检测命令
last命令用于查看所有系统的登录记录,格式为“last [参数]” 使用last命令可以查看本机的登录记录。但是,由于这些信息都是以日志文件的形式保存在系统中,因此黑客可以很容易地对内容进行篡改。千万不要单纯以该命令的输出信息而判断系统有无被恶意入侵!
236 0
新手必会的Linux常用系统状态检测命令
|
Unix Linux
RHEL系统状态检测命令
1.ifconfig命令 2.uname命令 3.uptime命令 4.free命令 5.who命令 6.last命令 7.ping命令 8.traceoath命令 9.netstat命令 10.history命令 11.sosreport命令
174 0
RHEL系统状态检测命令
C#判断联网状态检查电脑联网状态
C#判断检查联网状态-判断Unity Window PC电脑联网状态 本文提供全流程,中文翻译 Unity判断联网状态,适用于所有平台 助力快速利用 C# 判断用户电脑网状态 为新手节省宝贵的时间,避免采坑! Unity 引擎提供的 Application.
2659 0
|
Linux 网络安全 网络架构
关于开发板用tftp下载失败分析
一、想实现开发板和PC ping通:(1)windows和linux桥接(2)用路由器将开发板和PC连接起来(3)将windows和linux以及开发板的IP设置成同一网段,注意不要和你同一个局域网的IP重复(4)关闭linux的防火墙以及SELinux(5)关闭windows的防火墙   二、关于开发板用tftp下载内核文件1.windows和VM的虚拟机之间用桥接,2.开发板和路由器之间用网线连接,PC和路由器之间用网线连接。
1668 0