Название: Выбор протокола для обмена данными Отправлено: Yegor от Май 02, 2016, 12:10 Здравствуйте всем!
Использую Qt самую свежую. У меня есть задача - чтобы установить соединение между клиентом и сервером (по интернету, с помощью OpenVPN). И чтобы по этому соединению передавать разнородные данные, трех видов:
Нужно уметь отделять эти данные друг от друга, знать где какой тип, чтобы они не смешивались. Посоветуйте, пожалуйста, какой протокол соединения лучше для этого использовать? Может HTTP? Название: Re: Выбор протокола для обмена данными Отправлено: Old от Май 02, 2016, 12:13 Если мы говорим про интернет и нужна гарантированная доставка данных, то только tcp и остается.
Название: Re: Выбор протокола для обмена данными Отправлено: qate от Май 02, 2016, 23:16 нужно написать клиент и\или сервер ?
Название: Re: Выбор протокола для обмена данными Отправлено: nwnclv от Май 04, 2016, 01:41 Возьми любую либу, реализующую RPC. Поверх TCP, да
Название: Re: Выбор протокола для обмена данными Отправлено: Yegor от Май 12, 2016, 20:46 Цитировать нужно написать клиент и\или сервер Да, обмен между клиентом и сервером. Причем клиент должен авторизоваться (логин, пароль) при подключении.Цитировать Возьми любую либу, реализующую RPC. Поверх TCP, да А что такое RPC? Это например SOAP или REST?Название: Re: Выбор протокола для обмена данными Отправлено: PimenS от Май 12, 2016, 21:05 Из примеров:
Fortune Server Example Fortune Client Example чем не подходят? Название: Re: Выбор протокола для обмена данными Отправлено: Yegor от Май 13, 2016, 17:17 В примерах используются Tcp сокеты.
А класс QNetworkAccessManager для чего он? В каких случаях используется? Подойдет ли использование QNetworkAccessManager для обмена между клиентом и сервером? Название: Re: Выбор протокола для обмена данными Отправлено: PimenS от Май 13, 2016, 18:55 Вам нужно:
1. обмен между клиентом и сервером или 2. отправка запроса серверу и получение ответа ? Название: Re: Выбор протокола для обмена данными Отправлено: Yegor от Май 13, 2016, 19:24 Нужен обмен между клиентом и сервером. Интересуют передовые удобные технологи для этой задачи.
Название: Re: Выбор протокола для обмена данными Отправлено: Old от Май 13, 2016, 19:25 Вам нужно: А в чем разница? :)1. обмен между клиентом и сервером или 2. отправка запроса серверу и получение ответа ? Название: Re: Выбор протокола для обмена данными Отправлено: nwnclv от Май 13, 2016, 21:45 Нужен обмен между клиентом и сервером. Интересуют передовые удобные технологи для этой задачи. Что значит передовые? передовые для чего? Удобство тоже субъективная чтука, которая и от опыта зависит. а про RPC ... да их тысячи, либ-то, thrift, grpc. А уж по названию "Qt RPC", так еще больше выдается Я вообще свою писал, для управления железками типа raspberri :) Так что выбирай какой нравится. Название: Re: Выбор протокола для обмена данными Отправлено: PimenS от Май 13, 2016, 23:35 А в чем разница? :) Понятно, что в обоих случаях происходит обмен. В первом случае, я имел ввиду, ситуацию, когда не только клиент может отправлять запрос серверу, но и сам сервер может инициировать передачу данных клиенту. Во втором же случае, классический вариант клиент-сервера. Когда клиент только спрашивает, сервер только отвечает на запросы. Название: Re: Выбор протокола для обмена данными Отправлено: ssoft от Май 14, 2016, 07:38 Для понимания задачи необходимо провести декомпозицию
1. Есть желание организовать между компонентами системы взаимодействие по технологии клиент-сервер. Это определенная технология, которая подразумевает разделение логики на серверную и клиентские части. Кто что делает решает программист (аналитик). 2. Существует разные варианты организации обмена сообщениями между компонентами ПО (через файлы, TCP, UDP, РShared memory и т.п.). Среди прочих механизмов есть, например, QTcpServer & QTcpSocket из библиотеки Qt. 3. Для общения клиента и сервера необходим протокол взаимодействия, который определяется конкретной задачей и непосредственно разработчиком. Протокол может быть бинарным, текстовым (XML, JSON и т.п.). Если для задачи существует общепринятый протокол взаимодействия (http, ftp и т.п. ), то можно взять его. Однако, в подавляющем большинстве случаев, протокол общения свой собственный, так как определяется спецификой конкретной задачи. На случай взаимодействия по готовым протоколам (http, ftp и др.) существуют готовые решения типа QNetworkAccessManager, однако они предполагают наличие определенного вида сервера, с которым происходит взаимодействие. Если требуется взаимодействие в виде запрос-ответ, то протокол http может подойти. Если север и клиент ваш собственный и задача специфическая, то протокол и способ взаимодействия вам придется реализовывать самостоятельно. Название: Re: Выбор протокола для обмена данными Отправлено: yodu от Май 18, 2016, 11:28 Приветствую, товарищи!
Хотел подобную тему поднять, но раз уже тут есть, напишу сюда. Сейчас мы хотим разделить один проект на 2 части (клиент/сервер). Проект Qt и довольно крупный. И вот встал вопрос о выборе библиотеки, которая позволит:
А, да. библиотка не обязательно на Qt должна быть. потому как клиенты будут еще и для маков/андроидов/винфонов и там не Qt. Я сейчас эту тема сам раскапываю, но вдруг кто опыт имеет и может ткнуть носом в подходящее. Потому как пока я все пересмотрю время пройдет немалое. Спасибо. Название: Re: Выбор протокола для обмена данными Отправлено: nwnclv от Май 18, 2016, 23:26
Помимо этих двух, я тут еще упоминал grpc (http://www.grpc.io/), про его возможности/невозможности я не знаю ничего. Если будет сильно интересно, можешь еще мой велосипед на С++, Boost и Protobuf посмотреть либа (https://github.com/newenclave/vtrc), некоторе корявенькое описание (https://github.com/newenclave/vtrc/wiki), примеры (https://github.com/newenclave/vtrc/tree/master/examples) вдруг, что интересное оттуда почерпнешь. Название: Re: Выбор протокола для обмена данными Отправлено: yodu от Май 19, 2016, 10:02 Спасибо, как раз смотрю gRPC.
Про thrift я так и не понял, может ли там сервер дергать клиента, но пока его только поверхностно глянул. а вот vtrc выглядит довольно похоже на то, что надо. судя по описанию. буст у нас уже есть, так что с ним тоже поиграюсь. Если что, спрошу ;) |