У меня есть клиент и сервер, использующий 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