Синхронные HTTPS-запросы с curlpp

Когда я пытаюсь предварительно сформировать много синхронных запросов https с помощью curlpp, я получаю следующую ошибку:

Не удалось подключиться к https://www.google.com/ порт 443: нет маршрута к хосту

Приведенный ниже код, конечно, является только урезанным, очищенным образцом реального кода. URL отличается, но результат тот же.

void ThreadFunction()
{
try
{
curlpp::Cleanup myCleanup;
std::ostringstream os;
os << curlpp::options::Url("https://www.google.com/");
}
catch( curlpp::RuntimeError &e )
{
std::cout << e.what() << std::endl;
}
catch( curlpp::LogicError &e )
{
std::cout << e.what() << std::endl;
}
}

int main(void)
{
thread threads[10];

int loops = 0;

while(loops < 3000)
{
for(int i = 0; i < 10; i++)
{
threads[i] = thread(ThreadFunction);
}

for(int i = 0; i < 10; i++)
{
threads[i].join();
}
loops++;
}

return 0;
}

Ошибки возникают не сразу с самого начала, а вокруг цикла ~ 1000. После этого каждый запрос генерирует эту ошибку. Я попытался использовать разные порты (например, 80) для каждого потока, но curlpp, кажется, только выполняет запрос https с использованием порта 443. При запуске только одного потока все выглядит нормально (за исключением того, что это занимает слишком много времени, таким образом, несколько потоков).

Итак, моя теория A: На самом деле возможно выполнить такой синхронный запрос, но мне не хватает закрытия / очистки порта после запроса. (Я имею в виду, это работает для первых ~ 1000 * 10 запросов)

Теория Б: это не возможно оформление запросов через тот же порт, в то же время, но потоки просто используют один и тот же порт в немного другое время (пока его нет, ~ 1000)

Или C: Это просто недопустимо, после того, как куча запросов у какого-то сетевого повелителя была достаточно и блокирует новые запросы.

Я должен признать, что у меня ограниченные знания в области сетей, чтобы точно определить причину здесь или найти решение по этому вопросу. Каков наилучший способ решения такой задачи? Любая помощь приветствуется.

4

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector