作者question2 (问问问)
看板Programming
标题[问题] qt连网页来检查版本我该怎麽做?
时间Mon Dec 6 15:40:54 2021
我用Qt写了一个简单的程式。
其中有一个动作是每次开启程式都会检查有没有新的版本
我简单地让程式去读网页,分析收到的字串来判断是否有新版本
以下是程式码
bool gotoUpdate(){
QNetworkAccessManager manager;
QNetworkReply *reply = manager.get(QNetworkRequest(QUrl(url)));
QEventLoop event_loop;
QObject::connect(reply , SIGNAL(finished()),
&event_loop, SLOT(quit()));
QTimer::singleShot(2000, reply, SLOT(abort()));
event_loop.exec();
QString str{reply->readAll()};
if (str.isEmpty()){
//如果抓最新版本失败了,就当作是最新版本吧
reply->close();
reply->deleteLater();
manager.deleteLater();
return false;
}
//以下略
}
因为我想要统计程式被使用者开启的次数
所以我是实际上是去读用reurl.cc缩过的网址
在我自己的电脑上当然是没问题。
程式没出错
从reurl.cc上也看的到确实每开启一次程式计数器就+1
但是分享给别人之後
却发现下载程式档案的url计次不断的上升
可是开启程式的计次却偶而有上升。
比例相当於10倍。
也就是说10个下载程式的人只有1个人成功开启。
不管分析字串有没有错误,只要有收到从网页那边传来的字串
reurl的计数器都会++
而从上面的程式码可以看到,如果字串是空的,或是2秒的时间到了而被中断
程式都还是会继续执行。
所以我在想...会不会我发出去的程式其实是可以跑起来的
但是可能使用者的防毒软体、防火墙、OS版本或是我的dll版本不适用而导致网路功能被截
停?
但我暂时不知道怎麽确认....
因为一来我不知道谁有下载我的程式,
二来没什麽人回应我到底程式是成功还是失败
失败可能就当场删掉了也不会特地写信回应我QQ....
想请问要怎麽做才可以确保程式成功执行
或是至少能够知道使用者有没有成功执行?
我检查版本的方式或是连网页的程式码有错误吗?
感谢阅读
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.192.225.144 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Programming/M.1638776457.A.CC1.html