Библиотека C ++ для отправки простой строки для запросов HTTPS

У меня есть программа-эмулятор, написанная на C ++, работающая на Ubuntu 12.04. Есть некоторые настройки и опции, необходимые для запуска программы, которые задаются аргументами main. Мне нужно запросить эти параметры через HTTPS с удаленного компьютера / мобильного устройства (так что представьте, что я хочу вернуть основные аргументы). Мне было интересно, может ли кто-нибудь мне с этим помочь.

Вероятно, для простоты должны быть какие-то библиотеки, например Poco. Не уверен, насколько это подходит для моего случая, но вот любой пример настройки соединения в poco. Однако использование каких-либо библиотек не обязательно; просто самый эффективный / самый простой способ.


person Tina J    schedule 01.06.2014    source источник
comment
Я действительно не уверен, что вам здесь нужно. Вы ищете способ запустить службу с определенными аргументами удаленно? Или вам нужен пульт для уже работающей службы? Тем не менее, ваш фрагмент кода, похоже, не соответствует вашему вопросу, и я не уверен, что вы пытаетесь с ним делать.   -  person Avery    schedule 01.06.2014
comment
@Avery О, сейчас я просто хочу запросить, без контроля, после запуска программы. Итак, клиентское устройство хочет запросить некоторые переменные внутри моей программы. И этот коммунитарный должен быть через HTTPS. Забудьте о приведенном выше коде; Я не знаю, как это сделать.   -  person Tina J    schedule 01.06.2014


Ответы (2)


Mongoose (или вилка без GPL Civetweeb) являются встроенными веб-серверами. Очень легко настроить и добавить контроллеры (обычно полдюжины строк кода)

Просто добавьте файл проекта (1 c-файл) в свой проект и сборку, добавьте строку для запуска прослушивания сервера и укажите ему, какие параметры вам нравятся, и добавьте функцию обратного вызова для обработки запросов. Он делает ssl из коробки (хотя для IIRC вам также потребуется установить openssl)

Был еще один ответ SO с некоторыми сравнениями. Я использовал civetweb в работе и был впечатлен тем, насколько все это было легко. Однако документации не так уж и много.

person gbjbaanb    schedule 01.06.2014
comment
Эммм, интересно. Другой пользователь предположил, что если я просто хочу вернуть несколько простых строк через https, нет необходимости использовать настройку сервера https, что делает ее слишком сложной. Я новичок в этом; может, вы можете привести пример? Предположим, у вас есть основная программа, вы слушаете соединение и возвращаете аргументы main. - person Tina J; 01.06.2014
comment
civetweb поставляется с парой примеров программ. - person gbjbaanb; 01.06.2014

Вот урезанная версия POCO, полный код см. В Пример HTTPSTimeServer.

struct MyRequestHandler: public HTTPRequestHandler
{
  void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response)
  {     
    response.setContentType("text/html");

    // ... do your work here

    std::ostream& ostr = response.send();
    ostr << "<html><head><title>HTTPServer example</title>"
         << "<body>Success!</body></html>";
  }
};

struct MyRequestHandlerFactory: public HTTPRequestHandlerFactory
{
  HTTPRequestHandler* createRequestHandler(const HTTPServerRequest& request)
  {
    return new MyRequestHandler;
  }
};

// ...

// set-up a server socket
SecureServerSocket svs(port);
// set-up a HTTPServer instance (you may want to new the factory and params
// prior to constructing object to prevent the possibility of a leak in case
// of exception)
HTTPServer srv(new MyRequestHandlerFactory, svs, new HTTPServerParams);
// start the HTTPServer
srv.start();
person Alex    schedule 01.06.2014
comment
Вы уверены, что это просто ?! где определяется порт? И, кстати, это просто HTTP? Хорошо, представьте, что я хочу вернуть основные аргументы. - person Tina J; 02.06.2014
comment
Да, я уверен; POCO делает все возможное, чтобы упростить жизнь программиста на C ++. Как упоминалось выше, это урезанная версия примера HTTPTimeServer. Единственным недостатком встроенного сервера POCO HTTP (S) является то, что он основан на потоках, поэтому он не может корректно масштабироваться до тысяч одновременных подключений. - person Alex; 02.06.2014