Название: Сетевое взаимодействие между qt и boost Отправлено: deMax от Сентябрь 04, 2014, 07:47 Есть клиентское приложение в Qt, есть серверное на c++ (boost). Как организовать между ними обмен данных?
Данные (массивы, файлы, структуры), объем данных не большой, но клиентское приложение вообще не работает без серверного. Название: Re: Сетевое взаимодействие между qt и boost Отправлено: Bepec от Сентябрь 04, 2014, 08:50 Эммм... Буст и Qt это лишь библиотеки C++... Как наладить обмен данных между c++ и c++ приложением - посмотреть что передаёт сервер и написать клиент под его протокол.
Название: Re: Сетевое взаимодействие между qt и boost Отправлено: deMax от Сентябрь 04, 2014, 09:10 Эммм... Буст и Qt это лишь библиотеки C++... Как наладить обмен данных между c++ и c++ приложением - посмотреть что передаёт сервер и написать клиент под его протокол. Пишется и сервер и клиент.Как между ними организовать связь? Сервер скорее всего будет под Linux, вроде оптимально использовать boost::asio. Клиент под win7 на qt(возможно, опционально будет и linux, благо qt позволяет). Вот я и думаю, сделать библиотеку обмена на boost::asio и прикрутить к клиенту и серверу, или qtcpsocket сможет с asio работать, или есть другие хорошие решения? Передачу файлов для обновления программы(отдельное приложение) через ftp сделать или тем же способом что и передачу данных? Название: Re: Сетевое взаимодействие между qt и boost Отправлено: Bepec от Сентябрь 04, 2014, 09:13 Как вы сделаете так и будет. передаваться будут те же байты.
Название: Re: Сетевое взаимодействие между qt и boost Отправлено: navrocky от Сентябрь 04, 2014, 09:49 Если объем данных не большой, то лучше использовать текстовый протокол, к примеру, JSON (https://ru.wikipedia.org/wiki/JSON-RPC). Его легко отлаживать и документировать.
Если большой объем, то гнать в бинарном виде. Способ сериализации конечно тут зависит от самих данных. Если это некие файлы, видео, аудио-потоки, то надо их гнать в сыром виде по сокету. Если структуры, то для их сериализации, видимо, придется использовать сериализацию из boost на обоих сторонах. Также можно посмотреть в сторону google protobuf или apache thrift для организации эффективного RPC. Название: Re: Сетевое взаимодействие между qt и boost Отправлено: vizir.vs от Сентябрь 04, 2014, 13:09 А нафига городить несколько вариантов общения по одному и тому же протоколу? Написать либу, которая будет отвечать за прием/передачу данных. Проще же будет
Название: Re: Сетевое взаимодействие между qt и boost Отправлено: deMax от Сентябрь 04, 2014, 13:14 А нафига городить несколько вариантов общения по одному и тому же протоколу? Написать либу, которая будет отвечать за прием/передачу данных. Проще же будет Как вариант я рассматриваю, только сервер boost, клиент Qt, еще и ОСи разные.Объем небольшой, в основном фоновый режим, нагрузка килобайты в секунду. Какие библиотеки/классы использовать? Название: Re: Сетевое взаимодействие между qt и boost Отправлено: Old от Сентябрь 04, 2014, 13:22 Какие библиотеки/классы использовать? Возьмите msgpack (http://msgpack.org).Название: Re: Сетевое взаимодействие между qt и boost Отправлено: deMax от Сентябрь 04, 2014, 14:01 Возьмите msgpack (http://msgpack.org). Спасибо, посмотрю.А если на сервере использовать boost::asio, то на клиенте тоже boost::asio или можно чем то еще обойтись? Хотелось бы использовать популярное решение. Название: Re: Сетевое взаимодействие между qt и boost Отправлено: Old от Сентябрь 04, 2014, 14:27 А если на сервере использовать boost::asio, то на клиенте тоже boost::asio или можно чем то еще обойтись? Хотелось бы использовать популярное решение. Да как вам будет удобно.msgpack небольшая библиотека, позволяющая кодировать и декодировать пакеты данных. А чем вы эти пакеты будете пересылать ей все равно. Название: Re: Сетевое взаимодействие между qt и boost Отправлено: vizir.vs от Сентябрь 04, 2014, 14:42 А нафига городить несколько вариантов общения по одному и тому же протоколу? Написать либу, которая будет отвечать за прием/передачу данных. Проще же будет Как вариант я рассматриваю, только сервер boost, клиент Qt, еще и ОСи разные.Объем небольшой, в основном фоновый режим, нагрузка килобайты в секунду. Какие библиотеки/классы использовать? Название: Re: Сетевое взаимодействие между qt и boost Отправлено: navrocky от Сентябрь 05, 2014, 09:41 Какие библиотеки/классы использовать? Возьмите msgpack (http://msgpack.org).Название: Re: Сетевое взаимодействие между qt и boost Отправлено: Old от Сентябрь 05, 2014, 10:19 По описанию хорошая штука, даже поддерживается cmake. Спасибо за наводку. Она и в использовании хороша: легко встраивается и имеет кучу биндингов для разных языков. |