QTcpSocket无法绑定到正确的IP

时间:2014-09-20 04:51:52

标签: c++ qt bind qtcpsocket

我正在构建一个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(),但我不确定它是否相同

1 个答案:

答案 0 :(得分:1)

我已经确认原因是Qt库中的一个错误,报告here。这个错误自Qt 4.8起就存在了,今天我们在Qt 5.3。很难相信这样一个重要的错误是不固定的(对任何使用网络的应用都很重要)