How to choose which Network interface to use?

前端 未结 2 1607
南方客
南方客 2021-01-12 20:16

I use Qt for my TCP communication. If my PC has 2 network interfaces (say eth0, eth1), and say I want to explicitly use eth1, how do I do that in Qt?

相关标签:
2条回答
  • 2021-01-12 20:30

    QTcpServer::listen takes address of the interface you want to listen as the first argument.

    If you have IP address 192.168.0.1 on eth0 and 10.0.0.0.1 on eth1 then

    QTcpServer serv0;
    QTcpServer serv1;
    
    serv0.listen( QHostAddress("192.168.0.1"), 8080 );
    serv1.listen( QHostAddress("10.0.0.0.1"), 8080 );
    

    serv0 will listen only port 8080 on eth0 and serv1 will listen only port 8080 on eth1.

    There is no way to specify which interface should QTcpSocket use since it is decided by operation system according to the kernel routing table.

    You can use QNetworkInterface::allAddresses() to get list of interfaces addresses available.

    0 讨论(0)
  • 2021-01-12 20:35

    That's not a Qt question, that's a socket question. Bind() to the address on eth1. You have to hope that the routing table will actually do what you expect when you do that.

    0 讨论(0)
提交回复
热议问题