Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ libcurl-5秒后奇怪超时_C++_C_Curl_Timeout_Libcurl - Fatal编程技术网

C++ libcurl-5秒后奇怪超时

C++ libcurl-5秒后奇怪超时,c++,c,curl,timeout,libcurl,C++,C,Curl,Timeout,Libcurl,我正在使用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); 它们没有

我正在使用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\u easy\u perform()
总是在5秒后返回。
curlinfou-RESPONSE\u-code
CURLINFO\u-HTTP\u-CONNECTCODE
值始终为零

有什么想法吗?是否有其他需要设置的超时,或者是否有任何原因导致上述设置不生效


编辑:curl\u easy\u perform的返回值是
CURLE\u OPERATION\u TIMEDOUT

我认为这是因为以下两个原因之一:

  • 这里没有显示完整的程序,所以在其他地方有一个设置超时选项,指示libcurl超时

  • 您的libcurl版本有一个错误,使其行为不端。您没有说您使用的是哪个平台上的哪个libcurl版本


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

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

    您仍然可以分块下载文件。首先抓取头部并拉取文件的大小,然后使用以下选项拉取文件的每个块:

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

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

    curl\u easy\u perform()的返回值是多少?@Linus,我已经更新了主要帖子:)文档也提到了,也许这也需要设置?@Uwe,谢谢,但我尝试了启用和禁用CURLOPT\u NOSIGNAL,同一问题:(