我有一個運行需要網絡連接的工具的應用程序。現在我的目標是檢查用戶是否有網絡連接,如果他沒有網絡連接,我可以直接顯示錯誤而無需繼續進行。如果他有,他可以繼續處理我的申請。所以我的基本需求是檢查用戶是否有網絡連接。我如何通過Qt 4.4實現?我正在使用Windows XP。使用Qt 4.4驗證網絡連接
6
A
回答
10
此代碼將幫助你。
#include <QtCore/QCoreApplication>
#include <QtNetwork/QNetworkInterface>
bool isConnectedToNetwork()
{
QList<QNetworkInterface> ifaces = QNetworkInterface::allInterfaces();
bool result = false;
for (int i = 0; i < ifaces.count(); i++)
{
QNetworkInterface iface = ifaces.at(i);
if (iface.flags().testFlag(QNetworkInterface::IsUp)
&& !iface.flags().testFlag(QNetworkInterface::IsLoopBack))
{
#ifdef DEBUG
// details of connection
qDebug() << "name:" << iface.name() << endl
<< "ip addresses:" << endl
<< "mac:" << iface.hardwareAddress() << endl;
#endif
// this loop is important
for (int j=0; j<iface.addressEntries().count(); j++)
{
#ifdef DEBUG
qDebug() << iface.addressEntries().at(j).ip().toString()
<< "/" << iface.addressEntries().at(j).netmask().toString() << endl;
#endif
// we have an interface that is up, and has an ip address
// therefore the link is present
// we will only enable this check on first positive,
// all later results are incorrect
if (result == false)
result = true;
}
}
}
return result;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QTextStream output(stdout);
output << endl << "Connection Status: " << ((isConnectedToNetwork())?"Connected":"Disconnected") << endl;
return a.exec();
}
1
我假定通過「網絡連接」,你的意思是「互聯網連接」,即你不關心局域網或你的桌面和移動設備之間的一些特定網絡。
最簡單的方法就是連接到您的應用程序需要的互聯網服務,讓操作系統處理網絡請求。如果您收到回覆,則表示有連接,如果請求超時,則表示沒有連接。
您可以通過QNetworkInterface :: flags()檢查網絡接口的狀態,但是這並不能告訴您接口所連接的網絡的信息:接口可能已經啓動,但只連接到沒有Internet的LAN訪問。
1
在Qt 4.7中,您可以使用QNetworkConfiguration來檢查連接,甚至啓動它們,例如,在Symbian上。
相關問題
- 1. 無法驗證使用的Quickbooks網絡連接器/ CFML
- 2. 如何驗證c#應用程序中的網絡連接
- 3. 驗證網絡連接是否來自我的應用程序
- 4. 網絡簡單網絡連接的簡單Qt代碼
- 5. 如何在PhoneGap中驗證無線網絡連接?
- 6. C# - 網絡編程 - 允許連接之前驗證客戶端
- 7. 網絡連接
- 8. 總是得到「網絡連接丟失」作爲驗證問題
- 9. 在Qt 4.4中使用QMDIArea。
- 10. VMware網絡連接
- 11. android網絡連接
- 12. 檢測網絡連接
- 13. 驗證使用C(Linux)的網絡接口的存在
- 14. 使用網絡套接字運行javascript驗證測試
- 15. 使用靜態IP時的Android校驗網絡連接
- 16. 連接到專用網絡
- 17. 禁用網絡連接
- 18. ConnectivityManager驗證互聯網連接
- 19. Facebook連接,驗證網站。 &和&
- 20. 連接到網絡
- 21. 使用System.Net.Sockets.TcpClient的網絡連接
- 22. 使用TrafficStats網絡連接速度
- 23. 使用Paramiko連接網絡設備
- 24. 使用aws連接到Multichain網絡EC2
- 25. 使用asynctask進行網絡連接
- 26. eclipse ide svn網絡連接使用tor
- 27. 使用,無需連接到網絡
- 28. 使用linq連接asp點網絡?
- 29. 在網絡中使用連接器
- 30. 使用JavaScript檢查網絡連接
就像我在我的回答中寫道的那樣:QNetworkInterface會告訴你只有與某個網絡的連接已經啓動。它可能是沒有互聯網接入的局域網,可以將筆記本電腦與移動設備,虛擬機網絡等連接起來的ad-hoc wlan。我不認爲這是OP所尋找的信息。 – chalup 2010-03-19 09:15:59
是的...這就夠了..做了伎倆... – liaK 2010-03-19 11:49:20
感謝您的代碼。但是如果有人在她/他的計算機中安裝了虛擬機(像我一樣),則此代碼將失敗。如果我有時間,我會盡力解決它。 – 2013-01-20 19:47:28