Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие _ QNetworkAccessManager. Обмен данными через свой сокет.

Автор: MishaUA 24.5.2017, 15:02

Обычно при запросах через QNetworkAccessManager, он устанавливает соединение с сервером, передает ему данные и получает ответ, для этого он использует какой-то свой сокет. У меня задача немножко не стандартная.
Мне надо сделать так, чтобы программа с QNetworkAccessManager работала в качестве сервера, к ней подключался клиент (который является веб-сервером), далее создавался QTcpSocket и далее обмен данными происходил уже через него.
Сам сервер, с которого надо будет запрашивать файлы, является неким устройством, которое можно настраивать по сети. Но из-за NAT к нему нельзя подключиться, поэтому надо сделать так, чтобы оно подключалось к программе (на пк, где она стоит, есть белый IP).
Собственно, вопрос состоит в том, как "подсунуть" QNetworkAccessManager'у свой QTcpSocket, ну или просто свои методы чтения/записи по сети.
Если с этим ничего не получится, то придется работать вообще без QNetworkAccessManager, на голом QTcpSocket, но не хотелось бы тратить время)))
На стороне устройств-сервера это легко реализуется, там вопросов нет.

Автор: Алексей1153 25.5.2017, 8:19

создать QTcpServer и слушать порт. Сигнал newConnection() соединить со слотом, где вызвать nextPendingConnection() и через полученный сокет делать обмен

Автор: MishaUA 25.5.2017, 18:19

Примерно так и сделал, потом просто изменил концепцию)))
Но за ответ спасибо!

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)