C++ get request - необычная проблема
Привет,
Я написал некоторый код для выполнения запроса GET, и он работает до некоторой степени, за исключением того, что он не будет получать большие объемы данных должным образом. Это странно, потому что то, как я вывожу данные, похоже, определяет, сколько было получено.
У меня есть сервер, на который выполняется запрос GET, и я настроил его на вывод чисел от 0 до 9999 с помощью PHP-скрипта.
Работающий:
while (resp_len == BUFFER_SIZE) { resp_len = recv(sock, (char*)&buffer, BUFFER_SIZE, 0); if (resp_len > 0) { string data = string(buffer).substr(0, resp_len); printf(data.c_str()); } }
Не работать:
while (resp_len == BUFFER_SIZE) { resp_len = recv(sock, (char*)&buffer, BUFFER_SIZE, 0); if (resp_len > 0) { string data = string(buffer).substr(0, resp_len); response += data; } } printf(response.c_str());
В рабочем примере он последовательно возвращает 49 062 байта. С неудавшимся-всего 8372, и это тоже согласуется.
Мне нужен весь ответ в строке std::для возврата из этой функции. Не могли бы вы помочь мне разобраться в этом, пожалуйста?
Что я уже пробовал:
Несколько методов выполнения запросов GET, ни один из которых не работает отдельно от этого, и это темпераментно в зависимости от того, как выводятся данные.
Rick York
Что произойдет, если вы получите ответ меньше BUFFER_SIZE? Разве он не должен продолжаться, пока он получает какие-либо данные, т. е. resp_len > 0?