通過IP地址定位地址,是要通過查詢資料庫,如果自己做一個這樣的資料庫工作量就比較大,所以在網上找了一個查詢IP地址的網址,通過呼叫這個網址查詢來實現,但是這個有一定的弊端,如果沒有網路或者這個網址不可用時,就無法查詢。具體程式碼如下:

QEventLoop loop;

QNetworkAccessManager manager;
    QNetworkReply *pReply = manager.get(QNetworkRequest(QUrl("http://www.ip38.com/")));   // http://www.ip38.com/index.php?ip=您的IP
    connect(pReply, SIGNAL(finished()), &loop, SLOT(quit()));
    loop.exec();
    QByteArray byte = pReply->readAll();
    QString strTemp;

strTemp = strTemp.fromLocal8Bit(byte.data());
    int nStartIndex = strTemp.indexOf("<div id=\"ipadcode\" style=\"display:none\">");
    if (nStartIndex >= 0)
    {
        nStartIndex += strlen("<div id=\"ipadcode\" style=\"display:none\">");
        int nEndIndex = strTemp.indexOf("</div>", nStartIndex);
        if (nEndIndex > nStartIndex)
        {
            QString strResult = strTemp.mid(nStartIndex + 1, nEndIndex - nStartIndex - 1);
        }

}

上面ip38網站有時會失效,失效時可以使用:http://iframe.ip138.com/ic.asp

http://blog.csdn.net/itjobtxq/article/details/10497261