Я использую QT для своей коммуникации TCP. Если мой ПК имеет 2 сетевых интерфейса (скажите, что eth0, eth1), и говорят, что я хочу явно использовать eth1, как я делаю это в QT?
QTcpServer :: listen принимает адрес интерфейса, который вы хотите прослушивать, в качестве первого аргумента.
Если у вас IP-адрес 192.168.0.1 на eth0 и 10.0.0.0.1 на eth1, тогда
QTcpServer serv0;
QTcpServer serv1;
serv0.listen( QHostAddress("192.168.0.1"), 8080 );
serv1.listen( QHostAddress("10.0.0.0.1"), 8080 );
serv0 будет слушать только порт 8080 на eth0, а serv1 будет слушать только порт 8080 на eth1.
Невозможно указать, какой интерфейс должен использовать QTcpSocket, поскольку это определяется операционной системой в соответствии с таблицей маршрутизации ядра.
Вы можете использовать QNetworkInterface :: allAddresses () для получения списка доступных адресов интерфейсов.
Это не вопрос Qt, это вопрос сокета. Bind () с адресом на eth1. Вы должны надеяться, что таблица маршрутизации действительно сделает то, что вы ожидаете, когда вы это сделаете.