Windows 8.1用户,使用Qt 5.3。尝试学习网络编程(请耐心等待)。我们说我的机器上有两台网络设备。一个被分配IP 192.168.1.2,另一个被分配192.168.1.3。第一个设备具有优先权。
我的目标是在192.168.1.2上创建一个QTcpServer,在192.168.1.3上创建一个QTcpSocket客户端。我设想这种方式的方法是来自客户端的数据包将从192.168.1.3开始(在某个端口上),前往路由器,然后到达服务器192.168.1.2(在某些端口上)。好的,希望这听起来很合理。
这就是问题所在。我找不到使用QTcpSocket指定传出地址的功能方法。似乎有一种绑定方法,但它没有做太多。每次我从客户端发送它时,它都会在默认设备上传输192.168.1.2。
socket = new QTcpSocket(this);
qDebug() << socket->localAddress(); // shows "0"
qDebug() << socket->localPort(); // shows "0"
socket->bind(QHostAddress("192.168.1.3"), 50000);
qDebug() << socket->localAddress(); // shows "50000"
qDebug() << socket->localPort(); // shows "0"
//socket->setLocalAddress(QHostAddress("192.168.1.4")); // error, says it's protected
//socket->setLocalPort("50000"); // error, says it's protected
//qDebug() << socket->localAddress();
//qDebug() << socket->localPort();
socket->connectToHost("google.com", 80); // network manager shows data on 192.168.1.2
有什么想法吗?