How to choose which Network interface to use?

前端 未结 2 1622
南方客
南方客 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.

提交回复
热议问题