libcurl - 5秒后奇怪的超时
问题描述:
我正在使用libcurl与Twitter和Identi.ca进行通信。只要我的连接不忙,一切都可以正常工作。但是,如果我正在下载一个大文件,curl会在5秒后请求超时。libcurl - 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_CODE
和CURLINFO_HTTP_CONNECTCODE
值总是都为零。
任何想法?是否还有其他需要设置的超时时间,或者有什么理由说明上述内容不生效?
编辑:curl_easy_perform的返回值是CURLE_OPERATION_TIMEDOUT
答
我会说这是因为二分之一的原因:
你不要在这里向我们展示了完整的程序,让你拥有一个设置的超时选项指示libcurl超时。
您的libcurl版本有一个错误的bug。你没有在你使用的平台上说哪个libcurl版本。
得到非常好的帮助,提供对重复的公开网址的问题完整源代码。
答
独立卷曲程序是否成功下载该文件?如果没有,可能会有5秒的请求超时限制服务器端。
你应该仍然能够以块的形式下载文件。首先抢头拉文件的大小,然后使用以下选项的文件拉到每块:
curl_easy_setopt(curl, CURLOPT_BINARYTRANSFER, 1);
curl_easy_setopt(curl, CURLOPT_RANGE, start_range + "-" + (start_range + chunk_size));
一旦你把所有的碎片,将它们串联在一起,你应该有你完整的文件。
'curl_easy_perform()'的返回值是什么? – 2011-05-22 10:18:33
@Linus,我已经更新了主帖:) – Kazade 2011-05-22 10:33:52
该文件也反对['CURLOPT_NOSIGNAL'](http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTNOSIGNAL),也许这需要也被设置? – 2011-05-22 10:37:28