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;
}
}
}
