Джанго и С ++ общение - PullRequest
       46

Джанго и С ++ общение

0 голосов
/ 07 ноября 2018

Мне нужно отправить некоторые данные из моей программы C ++ на моем клиентском компьютере на сервер Django, чтобы обработать данные с помощью Python и отправить их обратно на другой клиентский компьютер. Это было бы легко, если бы это было что-то вроде ajax с javascript с использованием json, но дело в том, что я много исследовал и нашел библиотеку для C ++ под названием Wt, она, кажется, имеет то, что мне нужно, но я понятия не имею, как бы быть в состоянии отправить данные в представление Django. Я не смог найти какой-либо полезный код, специфичный для этой проблемы, я был бы признателен, если бы кто-нибудь смог подсказать мне, как это сделать.

1 Ответ

0 голосов
/ 07 ноября 2018

wt - это библиотека для серверов. Вам нужен клиент. Ваш код C ++ будет действовать как браузер и отправлять HTTP-запросы на ваш сервер Django. Есть много библиотек C ++, которые позволяют вам это делать. Очень распространенным является libcurl . * * * * * * * * * * * * * * * * * * * * * * * * * * POST С libcurl легко *, как показано , их пример :

#include <stdio.h>
#include <curl/curl.h>

int main(void)
{
  CURL *curl;
  CURLcode res;

  /* In windows, this will init the winsock stuff */ 
  curl_global_init(CURL_GLOBAL_ALL);

  /* get a curl handle */ 
  curl = curl_easy_init();
  if(curl) {
    /* First set the URL that is about to receive our POST. This URL can
       just as well be a https:// URL if that is what should receive the
       data. */ 
    curl_easy_setopt(curl, CURLOPT_URL, "http://my.django.server/some/url");
    /* Now specify the POST data */ 
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=daniel&project=curl");

    /* Perform the request, res will get the return code */ 
    res = curl_easy_perform(curl);
    /* Check for errors */ 
    if(res != CURLE_OK)
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
              curl_easy_strerror(res));

    /* always cleanup */ 
    curl_easy_cleanup(curl);
  }
  curl_global_cleanup();
  return 0;
}
...