一个项目需要对用户的计算机进行联网检测,判断是否正连接着互联网。
一般有两个办法,一是判断本地连接的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;
}
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);
}
{
//创建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,如需转载请自行联系原作者