QT for Android 需要開發一個FTP客戶端,中間遇到無數難題,其中有一個就是獲取本地IP地址;由於本人接觸QT時間不長,對API函數等的理解不夠深入,忘記了網絡通信中關於本機回環地址描述,導致客戶端出現隨機連接不上的現象:
本地地址無效;
最終定位發現是獲取本地IP地址的時候出現127.0.0.1的地址,導致外部識別不了。這樣的話如果是主動模式剛好碰到這個IP就會出現上面的錯誤,於是修改代碼並將完整代碼貼出:
void CFTPclient::GetIPS() { QList<QHostAddress> list = QNetworkInterface::allAddresses(); foreach (QHostAddress address, list) { if(address.protocol() == QAbstractSocket::IPv4Protocol) //我們使用IPv4地址 { SetIPAddr(address.toString()); if("127.0.0.1" == GetIPAddr()) { continue; } break; } } }