Russian Qt Forum
Май 24, 2024, 15:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сетевое взаимодействие между qt и boost  (Прочитано 7340 раз)
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« : Сентябрь 04, 2014, 07:47 »

Есть клиентское приложение в Qt, есть серверное на c++ (boost). Как организовать между ними обмен данных?
Данные (массивы, файлы, структуры), объем данных не большой, но клиентское приложение вообще не работает без серверного.
Записан
Bepec
Гость
« Ответ #1 : Сентябрь 04, 2014, 08:50 »

Эммм... Буст и Qt это лишь библиотеки C++... Как наладить обмен данных между c++ и c++ приложением - посмотреть что передаёт сервер и написать клиент под его протокол.
Записан
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« Ответ #2 : Сентябрь 04, 2014, 09:10 »

Эммм... Буст и Qt это лишь библиотеки C++... Как наладить обмен данных между c++ и c++ приложением - посмотреть что передаёт сервер и написать клиент под его протокол.
Пишется и сервер и клиент.
Как между ними организовать связь? Сервер скорее всего будет под Linux, вроде оптимально использовать boost::asio. Клиент под win7 на qt(возможно, опционально будет и linux, благо qt позволяет).

Вот я и думаю, сделать библиотеку обмена на boost::asio и прикрутить к клиенту и серверу, или qtcpsocket сможет с asio работать, или есть другие хорошие решения? Передачу файлов для обновления программы(отдельное приложение) через ftp сделать или тем же способом что и передачу данных?
Записан
Bepec
Гость
« Ответ #3 : Сентябрь 04, 2014, 09:13 »

Как вы сделаете так и будет. передаваться будут те же байты.
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #4 : Сентябрь 04, 2014, 09:49 »

Если объем данных не большой, то лучше использовать текстовый протокол, к примеру, JSON (https://ru.wikipedia.org/wiki/JSON-RPC). Его легко отлаживать и документировать.

Если большой объем, то гнать в бинарном виде. Способ сериализации конечно тут зависит от самих данных. Если это некие файлы, видео, аудио-потоки, то надо их гнать в сыром виде по сокету. Если структуры, то для их сериализации, видимо, придется использовать сериализацию из boost на обоих сторонах. Также можно посмотреть в сторону google protobuf или apache thrift для организации эффективного RPC.
Записан

Гугль в помощь
vizir.vs
Гость
« Ответ #5 : Сентябрь 04, 2014, 13:09 »

А нафига городить несколько вариантов общения по одному и тому же протоколу? Написать либу, которая будет отвечать за прием/передачу данных. Проще же будет
Записан
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« Ответ #6 : Сентябрь 04, 2014, 13:14 »

А нафига городить несколько вариантов общения по одному и тому же протоколу? Написать либу, которая будет отвечать за прием/передачу данных. Проще же будет
Как вариант я рассматриваю, только сервер boost, клиент Qt, еще и ОСи разные.

Объем небольшой, в основном фоновый режим, нагрузка килобайты в секунду.
Какие библиотеки/классы использовать?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #7 : Сентябрь 04, 2014, 13:22 »

Какие библиотеки/классы использовать?
Возьмите msgpack.
Записан
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« Ответ #8 : Сентябрь 04, 2014, 14:01 »

Возьмите msgpack.
Спасибо, посмотрю.

А если на сервере использовать boost::asio, то на клиенте тоже boost::asio или можно чем то еще обойтись? Хотелось бы использовать популярное решение.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #9 : Сентябрь 04, 2014, 14:27 »

А если на сервере использовать boost::asio, то на клиенте тоже boost::asio или можно чем то еще обойтись? Хотелось бы использовать популярное решение.
Да как вам будет удобно.
msgpack небольшая библиотека, позволяющая кодировать и декодировать пакеты данных. А чем вы эти пакеты будете пересылать ей все равно.
Записан
vizir.vs
Гость
« Ответ #10 : Сентябрь 04, 2014, 14:42 »

А нафига городить несколько вариантов общения по одному и тому же протоколу? Написать либу, которая будет отвечать за прием/передачу данных. Проще же будет
Как вариант я рассматриваю, только сервер boost, клиент Qt, еще и ОСи разные.

Объем небольшой, в основном фоновый режим, нагрузка килобайты в секунду.
Какие библиотеки/классы использовать?
boost:asio вполне норм. Зачем переделывать, если уже все есть?!
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #11 : Сентябрь 05, 2014, 09:41 »

Какие библиотеки/классы использовать?
Возьмите msgpack.
По описанию хорошая штука, даже поддерживается cmake. Спасибо за наводку.
Записан

Гугль в помощь
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #12 : Сентябрь 05, 2014, 10:19 »

По описанию хорошая штука, даже поддерживается cmake. Спасибо за наводку.
Она и в использовании хороша: легко встраивается и имеет кучу биндингов для разных языков.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.095 секунд. Запросов: 20.