libcurl-5秒后出现奇怪的超时



我正在使用libcurl与Twitter和Identi.ca进行通信。只要我的连接不繁忙,一切都可以完美工作。但是,如果我正在下载一个大文件,curl会在5秒钟后请求超时。

我在卷曲手柄上设置了以下选项:

curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 30);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 60);
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 15);

curl_easy_perform()总是在5秒后返回。CURLINFO_RESPONSE_CODECURLINFO_HTTP_CONNECTCODE的值始终都为零。

有什么想法吗?我还需要设置其他超时吗?或者有什么原因导致上述超时无效?

EDIT:curl_easy_performer的返回值为CURLE_OPERATION_TIMEDOUT

我认为这是因为两个原因中的一个:

  1. 这里没有向我们展示完整的程序,所以在其他地方有一个设置超时选项,指示libcurl超时。

  2. 您的libcurl版本有一个错误,导致它行为不端。您没有说明您在哪个平台上使用哪个libcurl版本。

要获得真正好的帮助,请提供一个完整的源代码,该代码针对公共URL重复该问题。

独立的curl程序是否成功下载了该文件?如果没有,服务器端可能会有5秒的请求超时限制。

您应该仍然可以分块下载该文件。首先获取HEAD并提取文件的大小,然后使用以下选项提取文件的每个块:

curl_easy_setopt(curl, CURLOPT_BINARYTRANSFER, 1);
curl_easy_setopt(curl, CURLOPT_RANGE, start_range + "-" + (start_range + chunk_size));

一旦你有了所有的部分,将它们连接在一起,你就应该有了完整的文件。

相关内容

  • 没有找到相关文章

最新更新