2014-09-20 70 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