QTcpSocket не может привязаться к правильному IP

Я создаю приложение для 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

Есть ли обходной путь? Я вижу setLocalAddress() в QAbstractSocket, но не уверен, что это то же самое


person TSG    schedule 20.09.2014    source источник


Ответы (1)


Я подтвердил, что причиной является ошибка в библиотеке Qt, о которой сообщается здесь. Эта ошибка существует с Qt 4.8, и сегодня мы находимся в Qt 5.3. Трудно поверить, что такая существенная ошибка не исправлена ​​(важно для любого приложения, использующего сеть)

person TSG    schedule 04.10.2014
comment
Извините за неинформативный комментарий. Это печальная вещь, которую я заметил с тех пор, как Digia поглотила Qt. Они стали меньше заботиться о C++ и посвящать больше всего ресурсов QML :( - person GreenScape; 05.10.2014