QTcpSocket 无法绑定到正确的 IP
Posted
技术标签:
【中文标题】QTcpSocket 无法绑定到正确的 IP【英文标题】:QTcpSocket can't bind to right IP 【发布时间】:2014-09-20 04:51:52 【问题描述】:我正在构建一个在具有多个 NIC(多宿主)的系统上运行的 linux Qt5/C++ 应用程序。我需要强制我的传出 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】:我已确认原因是 Qt 库中的错误,报告为 here。这个错误自 Qt 4.8 以来就存在,我们今天在 Qt 5.3。很难相信如此重大的错误没有得到修复(对于任何使用网络的应用程序来说都很重要)
【讨论】:
抱歉没有提供信息的评论。自从 Digia 接管 Qt 以来,我注意到这是一件可悲的事情。他们开始不太关心 C++ 并将大部分资源用于 QML :(以上是关于QTcpSocket 无法绑定到正确的 IP的主要内容,如果未能解决你的问题,请参考以下文章