Пользователь Windows 8.1 здесь, используя Qt 5.3. Попытка научиться сетевому программированию (пожалуйста, потерпите меня). Допустим, у меня есть два сетевых устройства на моей машине. Одному присвоен IP 192.168.1.2, а другому 192.168.1.3. Первое устройство имеет приоритет.
Моя цель — создать QTcpServer на 192.168.1.2 и клиент QTcpSocket на 192.168.1.3. Я предполагаю, что это будет работать, когда пакеты данных от клиента начнутся с 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
Есть идеи?
Задача ещё не решена.