есть ли опция в curl для установки тайм-аута сброса tcp?

У меня есть клиент и сервер, использующий http для передачи файлов, Я использовал tcpdump, обнаружив, что каждый раз после получения заголовка http, сервер отправляет ack, но затем сервер получает 2 пакета сброса, несколько раз получает сброс после успешного получения пакета, содержащего http-контент.

временная шкала данных tcpdump на стороне сервера выглядит, как:

01:10:01.553222------data:http header
01:10:01.553233----------ack

01:10:01.590075-----------reset
01:10:01.590103-----------reset

код установки опции завитка:

    curl_easy_setopt(curl_obj, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl_obj, CURLOPT_WRITEFUNCTION, WriteData); 
curl_easy_setopt(curl_obj, CURLOPT_WRITEDATA, &sbuf);  
curl_easy_setopt(curl_obj, CURLOPT_COOKIEFILE, "cookie");

curl_easy_setopt(curl_obj, CURLOPT_POST, 1L);
curl_easy_setopt(curl_obj, CURLOPT_READFUNCTION, ReadCallback);
curl_easy_setopt(curl_obj, CURLOPT_READDATA, this);
curl_easy_setopt(curl_obj, CURLOPT_POSTFIELDSIZE, block_size);


curl_easy_setopt(curl_obj, CURLOPT_NOPROGRESS, 0);
curl_easy_setopt(curl_obj, CURLOPT_PROGRESSFUNCTION, ProgressCallback);
curl_easy_setopt(curl_obj, CURLOPT_PROGRESSDATA, this)

Итак, я хочу спросить, есть ли какие-то опции в libcurl, чтобы установить тайм-аут для сброса tcp, когда вы не получили данные о переданных данных в течение ограниченного времени? если клиент и сервер находятся в одном городе и имеют быстрое подключение к Интернету, эта система работает нормально, поэтому в бизнес-коде не должно быть ошибок.

ps: curl возвращает errno 56

0
добавлено отредактировано
Просмотры: 1
nl ja de
Слишком много предположений здесь. Вы предполагаете , что сбросы выдаются в результате таймаута. Они могут быть выданы по другим причинам. Какое поведение вы испытываете на уровне приложения, который заставил вас получить этот tcpdump?
добавлено автор EJP, источник

1 ответы

Существует несколько вариантов обратного вызова, которые позволяют приложению напрямую обращаться к сокету, например CURLOPT_SOCKOPTFUNCTION и CURLOPT_OPENSOCKETFUNCTION .

Но, как комментатор по этому вопросу, я сомневаюсь, что это фактическая причина (или решение) для вашей проблемы.

0
добавлено