如何选择使用哪个网络接口?

siv*_*udh 6 qt network-programming

我使用Qt进行TCP通信.如果我的PC有2个网络接口(比如eth0,eth1),并说我想明确使用eth1,我该如何在Qt中做到这一点?

Ves*_*niK 7

QTcpServer :: listen将您要侦听的接口的地址作为第一个参数.

如果你在eth0上有IP地址192.168.0.1,在eth1上有10.0.0.0.1那么

QTcpServer serv0;
QTcpServer serv1;

serv0.listen( QHostAddress("192.168.0.1"), 8080 );
serv1.listen( QHostAddress("10.0.0.0.1"), 8080 );
Run Code Online (Sandbox Code Playgroud)

serv0将仅监听eth0上的端口8080,而serv1将仅侦听eth1上的端口8080.

没有办法指定QTcpSocket应该使用哪个接口,因为它是由操作系统根据内核路由表决定的.

您可以使用QNetworkInterface :: allAddresses()来获取可用的接口地址列表.