Написал клиент сервер на основе winsock2 на с++
Все работает отлично, но данные я передаю в виде SQL запросов и приходится передавать одно сообщение потом ждать ответ от сервера и так несколько раз.
Есть какие то стандартные решения чтобы передать переменные разных типов в том числе строки std::string, из одной с++ проги в другую?
Можно конечно самому формировать сообщение придумать какой то разделитель, потом на другой стороне написать прием этого сообщения, но мне кажется давно есть стандартные решения для этого.
Плюс при передаче строк всегда есть вероятность что передаваемая строка будет такая же как придуманный мной разделитель.
Интересует максимальная простота ну и желательно в будущем без проблемная состыковка с другими языками программирования, то есть отправляю на с++ получаю к примеру на с#.
Еще на вашем месте я бы рассмотрел вариант с разделителем, он намного проще в случае если передается просто список разных переменных. Чтобы не было проблемы "строка такая же как разделитель", перед склейкой строки, если какая-то переменная std::string содержит разделитель, то он заменяется на любую другую комбинацию символов, а перед разбором строки заменяется назад. Как подобрать эту самую комбинацию символов - это уже от задачи зависит.
А простой пример отправки и приема сообщения на JSON можете показать ? Еще хотелось бы чтобы как то имена переменных передавались, то есть передается сообщение и там сразу идет имя переменной и ее значение, такое вообще возможно ?
@winser если делать в лоб, к сожалению прийдется писать руками код типа такого mVal1 = controllerSettings.get("Val1");
mVal2 = controllerSettings.get("Val2");
mVal3 = controllerSettings.get("Val3");
Что бы не думать что использовать json или xml, рекомендую посмотреть на boost::ptree.
Это враппер над некоторыми стандартными форматами хранения данных.
Вот небольшой туториал: www.boost.org/doc/libs/1_42_0/doc/html/boost_prope...
вместо write_xml пишите write_json и можете использовать другой формат (хотя там есть ньюансы, но они тут не важны)
В общем вариантом много но нужен рабочий пример приема и передачи данных
на JSON или XML !!!
какие то функции которые будут записывать переменные на одной стороне и считывать на второй
А то пока кроме описания формата данных ничего не нашел, а реализовывать все самому слишком долго.
Если нет ничего готового на с++, то проще сделать свой разделитель и проверку что значение переменной не содержит этот разделитель.
@winser Если вы хотите готовую материализацию типа такого: superNetwork.send(MySuperCLass& myClass), то такого нет, вам всеравно прийдеться писать руками сериализацию членов класса или использовать внешню кодогенерацию, как например google protobuf. Класс для сериализации я вам предложил boost::ptree, пишите все в него, потом сохраняете в стрим, берете оттуда строку, ее как кусок памяти отправляете, на клиенте все наоборот делается.