QTcpSocket和指定客户端传出网络设备

时间:2015-04-20 00:49:07

标签: c++ qt tcp qt5 tcpserver

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

有什么想法吗?

0 个答案:

没有答案