QTcpSocket无法绑定正确的IP地址。

3

我正在开发一款运行在具有多个网卡(多宿主)系统上的Linux Qt5/C++应用程序。我需要强制我的出站TCP连接使用特定的网卡/IP。我尝试了下面的代码,但是netstat确认我的应用程序仍然在使用错误的本地网卡/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个回答

1

我确认原因是Qt库中的一个bug,在这里报告。这个bug存在自Qt 4.8以来,今天我们使用的是Qt 5.3。难以相信这样一个重要的bug没有被修复(对于任何使用网络的应用程序都很重要)。


抱歉评论不够具体。自从Digia接管Qt以来,我注意到了一个令人沮丧的事情。他们开始对C++不那么关注,而是将大部分资源用于QML :( - GreenScape

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接