Russian Qt Forum
Ноябрь 23, 2024, 08:47
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Работа с сетью
>
Сетевое взаимодействие между qt и boost
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Сетевое взаимодействие между qt и boost (Прочитано 7663 раз)
deMax
Хакер
Offline
Сообщений: 600
Сетевое взаимодействие между qt и boost
«
:
Сентябрь 04, 2014, 07:47 »
Есть клиентское приложение в Qt, есть серверное на c++ (boost). Как организовать между ними обмен данных?
Данные (массивы, файлы, структуры), объем данных не большой, но клиентское приложение вообще не работает без серверного.
Записан
Bepec
Гость
Re: Сетевое взаимодействие между qt и boost
«
Ответ #1 :
Сентябрь 04, 2014, 08:50 »
Эммм... Буст и Qt это лишь библиотеки C++... Как наладить обмен данных между c++ и c++ приложением - посмотреть что передаёт сервер и написать клиент под его протокол.
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: Сетевое взаимодействие между qt и boost
«
Ответ #2 :
Сентябрь 04, 2014, 09:10 »
Цитата: Bepec от Сентябрь 04, 2014, 08:50
Эммм... Буст и Qt это лишь библиотеки C++... Как наладить обмен данных между c++ и c++ приложением - посмотреть что передаёт сервер и написать клиент под его протокол.
Пишется и сервер и клиент.
Как между ними организовать связь? Сервер скорее всего будет под Linux, вроде оптимально использовать boost::asio. Клиент под win7 на qt(возможно, опционально будет и linux, благо qt позволяет).
Вот я и думаю, сделать библиотеку обмена на boost::asio и прикрутить к клиенту и серверу, или qtcpsocket сможет с asio работать, или есть другие хорошие решения? Передачу файлов для обновления программы(отдельное приложение) через ftp сделать или тем же способом что и передачу данных?
Записан
Bepec
Гость
Re: Сетевое взаимодействие между qt и boost
«
Ответ #3 :
Сентябрь 04, 2014, 09:13 »
Как вы сделаете так и будет. передаваться будут те же байты.
Записан
navrocky
Гипер активный житель
Offline
Сообщений: 817
Погроммист
Re: Сетевое взаимодействие между qt и boost
«
Ответ #4 :
Сентябрь 04, 2014, 09:49 »
Если объем данных не большой, то лучше использовать текстовый протокол, к примеру, JSON (
https://ru.wikipedia.org/wiki/JSON-RPC
). Его легко отлаживать и документировать.
Если большой объем, то гнать в бинарном виде. Способ сериализации конечно тут зависит от самих данных. Если это некие файлы, видео, аудио-потоки, то надо их гнать в сыром виде по сокету. Если структуры, то для их сериализации, видимо, придется использовать сериализацию из boost на обоих сторонах. Также можно посмотреть в сторону google protobuf или apache thrift для организации эффективного RPC.
Записан
Гугль в помощь
vizir.vs
Гость
Re: Сетевое взаимодействие между qt и boost
«
Ответ #5 :
Сентябрь 04, 2014, 13:09 »
А нафига городить несколько вариантов общения по одному и тому же протоколу? Написать либу, которая будет отвечать за прием/передачу данных. Проще же будет
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: Сетевое взаимодействие между qt и boost
«
Ответ #6 :
Сентябрь 04, 2014, 13:14 »
Цитата: vizir.vs от Сентябрь 04, 2014, 13:09
А нафига городить несколько вариантов общения по одному и тому же протоколу? Написать либу, которая будет отвечать за прием/передачу данных. Проще же будет
Как вариант я рассматриваю, только сервер boost, клиент Qt, еще и ОСи разные.
Объем небольшой, в основном фоновый режим, нагрузка килобайты в секунду.
Какие библиотеки/классы использовать?
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Сетевое взаимодействие между qt и boost
«
Ответ #7 :
Сентябрь 04, 2014, 13:22 »
Цитата: deMax от Сентябрь 04, 2014, 13:14
Какие библиотеки/классы использовать?
Возьмите
msgpack
.
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: Сетевое взаимодействие между qt и boost
«
Ответ #8 :
Сентябрь 04, 2014, 14:01 »
Цитата: Old от Сентябрь 04, 2014, 13:22
Возьмите
msgpack
.
Спасибо, посмотрю.
А если на сервере использовать boost::asio, то на клиенте тоже boost::asio или можно чем то еще обойтись? Хотелось бы использовать популярное решение.
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Сетевое взаимодействие между qt и boost
«
Ответ #9 :
Сентябрь 04, 2014, 14:27 »
Цитата: deMax от Сентябрь 04, 2014, 14:01
А если на сервере использовать boost::asio, то на клиенте тоже boost::asio или можно чем то еще обойтись? Хотелось бы использовать популярное решение.
Да как вам будет удобно.
msgpack небольшая библиотека, позволяющая кодировать и декодировать пакеты данных. А чем вы эти пакеты будете пересылать ей все равно.
Записан
vizir.vs
Гость
Re: Сетевое взаимодействие между qt и boost
«
Ответ #10 :
Сентябрь 04, 2014, 14:42 »
Цитата: deMax от Сентябрь 04, 2014, 13:14
Цитата: vizir.vs от Сентябрь 04, 2014, 13:09
А нафига городить несколько вариантов общения по одному и тому же протоколу? Написать либу, которая будет отвечать за прием/передачу данных. Проще же будет
Как вариант я рассматриваю, только сервер boost, клиент Qt, еще и ОСи разные.
Объем небольшой, в основном фоновый режим, нагрузка килобайты в секунду.
Какие библиотеки/классы использовать?
boost:asio вполне норм. Зачем переделывать, если уже все есть?!
Записан
navrocky
Гипер активный житель
Offline
Сообщений: 817
Погроммист
Re: Сетевое взаимодействие между qt и boost
«
Ответ #11 :
Сентябрь 05, 2014, 09:41 »
Цитата: Old от Сентябрь 04, 2014, 13:22
Цитата: deMax от Сентябрь 04, 2014, 13:14
Какие библиотеки/классы использовать?
Возьмите
msgpack
.
По описанию хорошая штука, даже поддерживается cmake. Спасибо за наводку.
Записан
Гугль в помощь
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Сетевое взаимодействие между qt и boost
«
Ответ #12 :
Сентябрь 05, 2014, 10:19 »
Цитата: navrocky от Сентябрь 05, 2014, 09:41
По описанию хорошая штука, даже поддерживается cmake. Спасибо за наводку.
Она и в использовании хороша: легко встраивается и имеет кучу биндингов для разных языков.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...