2010-04-27 11 views

risposta

7

QTcpServer :: listen prende l'indirizzo dell'interfaccia che si desidera ascoltare come primo argomento.

Se hai 192.168.0.1 indirizzo IP eth0 e 10.0.0.0.1 su eth1 allora

QTcpServer serv0; 
QTcpServer serv1; 

serv0.listen(QHostAddress("192.168.0.1"), 8080); 
serv1.listen(QHostAddress("10.0.0.0.1"), 8080); 

serv0 ascolterà solo porta 8080 sulla eth0 e Serv1 ascolterà solo porta 8080 sulla eth1.

Non esiste alcun modo per specificare quale interfaccia deve utilizzare QTcpSocket poiché è stata decisa dal sistema operativo in base alla tabella di routing del kernel.

È possibile utilizzare QNetworkInterface :: allAddresses() per ottenere l'elenco degli indirizzi di interfacce disponibili.

1

Questa non è una domanda di Qt, è una domanda di socket. Bind() all'indirizzo su eth1. Devi sperare che la tabella di routing faccia effettivamente quello che ti aspetti quando lo fai.

Problemi correlati