如果我有套接字错误,我需要检查网际网路连接。我就这样,
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)));但有时我会得到“没有互联网对话框”,即使无线网络是可用的。为什么?
方法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;
}我的代码有问题吗?
发布于 2014-01-04 08:30:09
您的网络检查代码段似乎太复杂了。只需调用以下方法即可:
bool QNetworkConfigurationManager::isOnline () const 如果系统被认为是通过活动网络接口连接到另一个设备,则返回true;否则返回false。
如果这对某人无效,这很可能意味着互联网连接是不可靠的,特别是如果它不能随机工作。
发布于 2015-03-29 17:49:40
关于
NetworkAccessibility QNetworkAccessManager::networkAccessible ()networkAccessible : NetworkAccessibility 此属性保存当前是否可以通过此网络访问管理器访问网络。 如果无法访问网络,则网络访问管理器将不会处理任何新的网络请求,所有此类请求都将失败。带有文件:// will的URL请求仍将被处理。
https://stackoverflow.com/questions/20812004
复制相似问题