如果收到套接字错误,我需要检查Internet连接。我正在这样做,
void Client::socketError(QAbstractSocket::SocketError socketError) {
HttpPost("https://www.google.co.in/");
}
void Client::HttpPost(QString URL ) {
QNetworkRequest request = QNetworkRequest();
request.setUrl(QUrl(URL));
QNetworkAccessManager *mNetworkAccessManager = new QNetworkAccessManager(this);
bool result = connect(mNetworkAccessManager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(HttpResponse(QNetworkReply *)));
mNetworkAccessManager->get(request);
qDebug() << "::: Client.cpp Request made to Service :::";
}
void Client::HttpResponse(QNetworkReply* reply) {
if (reply->error() == QNetworkReply::NoError) {
qDebug() << "\n Internet Ok **********";
} else {
qDebug() << "\n No Internet **********" << reply->errorString();
showDialog("No Inernet");
}
}
我正在连接信号和插槽,如
connect(socket, SIGNAL(error(QAbstractSocket::SocketError)),
this, SLOT(socketError(QAbstractSocket::SocketError)));
但有时候即使Wi-Fi可用,我也会收到“No Internet Dialog”。为什么?
方法2:
// this method will return true If Net is available false other wise
// but even this is return false some times even Wi fi signal is Available
bool Client::isNetworkAvailable() {
bool isFound = false;
QNetworkConfigurationManager netMgr;
QList<QNetworkConfiguration> mNetList = netMgr.allConfigurations(QNetworkConfiguration::Active);
if (mNetList.count() > 0) {
if (netMgr.isOnline()) {
isFound = true;
}
}
qDebug() << "\n ************** isNetworkAvailable:::" << isFound;
return isFound;
}
我的代码有问题吗?
答案 0 :(得分:0)
您的网络检查代码段似乎有点过于复杂。您只需调用以下方法:
bool QNetworkConfigurationManager::isOnline () const
如果系统被认为通过活动网络接口连接到另一个设备,则返回true;否则返回false。
如果这对某人不起作用,很可能意味着互联网连接不可靠,特别是如果它不能随机工作。
答案 1 :(得分:0)
怎么样?
NetworkAccessibility QNetworkAccessManager::networkAccessible ()
networkAccessible:NetworkAccessibility
此属性保存网络当前是否可通过 这个网络访问管理器。
如果网络不可访问,网络访问管理器则不会 处理任何新的网络请求,所有这些请求都将失败 错误。带有file:// scheme的URL的请求仍然是 处理。