我使用Qt进行TCP通信。如果我的PC有2个网络接口(比如eth0,eth1),并说我想明确使用eth1,我该如何在Qt中做到这一点?
答案 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上的地址。您必须希望路由表在执行此操作时实际执行您期望的操作。