2014-09-20 72 views
3

我正在構建一個在具有多個NIC(多宿主)的系統上運行的Linux Qt5/C++應用程序。我需要強制我的傳出TCP連接使用特定的NIC/IP。我已經嘗試了下面的代碼,但是netstat證實我的應用程序仍在使用錯誤的本地NIC/IP。QTcpSocket無法綁定到正確的IP

if (m_tcpSocket->bind(localaddress)) qDebug() << "Bind success"; 
m_tcpSocket->connectToHost(
      remoteaddress, 
      remoteport, 
      QTcpSocket::ReadWrite); 
} 

我是不是正確地稱這個錯誤?我看到「綁定成功,」所以我想調用的是正確的......但我無法解釋爲什麼它不工作


更新:我發現這個錯誤報告:https://bugreports.qt.io/browse/QTBUG-29732

有一種解決方法?我在QAbstractSocket中看到setLocalAddress(),但我不確定它是否相同

回答

1

我已經確認原因是Qt庫中的錯誤,報告爲here。這個bug從Qt 4.8開始就存在,我們今天在Qt 5.3。很難相信這樣一個重要的錯誤並不是固定的(對於使用網絡的任何應用程序都很重要)

+0

抱歉,對於非信息性評論。自Digia接管Qt以來,我注意到這是一件可悲的事情。他們開始關注C++,並將大部分資源投入到QML :( – GreenScape 2014-10-04 22:45:51