我正在构建一个Linux Qt5 / C ++应用程序,该应用程序在具有多个NIC(多宿主)的系统上运行。我需要强制我的传出TCP连接使用特定的NIC / IP。我尝试了以下代码,但netstat确认我的应用程序仍在使用错误的本地NIC / 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(),但我不确定它是否相同
答案 0 :(得分:1)
我已经确认原因是Qt库中的一个错误,报告here。这个错误自Qt 4.8起就存在了,今天我们在Qt 5.3。很难相信这样一个重要的错误是不固定的(对任何使用网络的应用都很重要)