2014-09-20 5 views
3

Я создаю приложение linux Qt5/C++, которое работает в системе с несколькими NIC (многосетевыми). Мне нужно заставить мое исходящее TCP-соединение использовать определенный NIC/IP. Я пробовал следующий код, но netstat подтверждает, что мое приложение по-прежнему использует неправильный локальный сетевой адаптер/IP.QTcpSocket не может привязываться к правильному 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, но я не уверен, что это то же самое

ответ

1

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

+0

Извините за неинформативный комментарий. Это печальная вещь, которую я заметил, поскольку Digia взяли Qt. Они начали меньше заботиться о C++ и посвятили большинство ресурсов QML :( – GreenScape