Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何选择要使用的网络接口?_Qt_Network Programming - Fatal编程技术网

Qt 如何选择要使用的网络接口?

Qt 如何选择要使用的网络接口?,qt,network-programming,Qt,Network Programming,我使用Qt进行TCP通信。如果我的电脑有两个网络接口(比如eth0、eth1),并且说我想显式地使用eth1,那么在Qt中如何做到这一点呢?这不是Qt问题,而是套接字问题。将()绑定到eth1上的地址。当您这样做时,您必须希望路由表将实际执行您期望的操作。QTcpServer::listen将要侦听的接口的地址作为第一个参数 如果eth0上的IP地址为192.168.0.1,eth1上的IP地址为10.0.0.0.1,则 QTcpServer serv0; QTcpServer serv1;

我使用Qt进行TCP通信。如果我的电脑有两个网络接口(比如eth0、eth1),并且说我想显式地使用eth1,那么在Qt中如何做到这一点呢?

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

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

如果eth0上的IP地址为192.168.0.1,eth1上的IP地址为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()获取可用接口地址列表