Я новичок в NaCl, и теперь у меня начинаются некоторые проблемы с этим. Я пытаюсь загрузить некоторые данные в часть приложения C ++ из кода C ++ и знаю, что не могу получить доступ к файлам на жестком диске из NaCl. Итак, я попытался использовать библиотеку curl для загрузки этих файлов через http с локального хоста.
Поэтому я настроил среду NaCl, добавил curl — все было нормально, потом возникла проблема, из-за которой curl не мог решить имя хоста, но, надеюсь, я преодолел эту проблему, но затем curls говорит, что он не может подключиться к серверу (код ошибки 7). Я не знаю, в чем может быть проблема.
Я запускаю Chrome с помощью этой команды:
google-chrome 127.0.0.1:5103/myapp --allow-nacl-socket-api=127.0.0.1
--no-sandbox --load-extension="/home/user/Desktop/nacl_sdk/pepper_49/getting_started/web/"--enable-nacl --user-data-dir="/home/user/Desktop/chrome-dir/"
И код, который пытается загрузить данные из localhost, выглядит следующим образом:
static size_t data_write(char* buf, size_t size, size_t nmemb, void* userp) {
printf("start data_write\n");
if (userp) {
std::stringstream& data = *static_cast<std::stringstream*>(userp);
std::streamsize len = size * nmemb;
for (int i = 0; i < len; ++i) {
data << buf[i];
}
return len;
}
printf("end data_write\n");
return 0;
}
CURLcode curl_read(const std::string& url, std::stringstream& os, long timeout = 300) {
CURLcode code(CURLE_FAILED_INIT);
CURL* curl = curl_easy_init();
printf("CURL_READ\n");
if (curl) {
printf("curl is not null\n");
if (CURLE_OK == (code = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION,
&data_write)) &&
CURLE_OK == (code = curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L)) &&
CURLE_OK ==
(code = curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L)) &&
CURLE_OK == (code = curl_easy_setopt(curl, CURLOPT_FILE, &os)) &&
CURLE_OK == (code = curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout)) &&
CURLE_OK == (code = curl_easy_setopt(curl, CURLOPT_URL, url.c_str()))) {
printf("START curl perform\n");
code = curl_easy_perform(curl);
printf("CURL ERROR (%d) = %s\n", code, curl_easy_strerror(code));
printf("END curl perform\n");
}
curl_easy_cleanup(curl);
}
return code;
}
И вывод из консоли:
Init curl
Loading data from: http://127.0.0.1/assets/model.obj
CURL_READ
curl is not null
START curl perform
CURL ERROR (7) = Couldn't connect to server
END curl perform
В чем может быть проблема? Можно ли даже использовать локон в NaCl?
Задача ещё не решена.
Других решений пока нет …