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

时间:2010-04-27 21:42:44

标签: qt network-programming

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

2 个答案:

答案 0 :(得分: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 );

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

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

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

答案 1 :(得分:1)

这不是Qt问题,这是一个套接字问题。将()绑定到eth1上的地址。您必须希望路由表在执行此操作时实际执行您期望的操作。