1

我正在使用 libcurl 将一些文件从客户端下载到服务器。我在 curl 连接中设置了以下选项,

curl_easy_setopt(curlPtr, CURLOPT_LOW_SPEED_LIMIT, 1);
curl_easy_setopt(curlPtr, CURLOPT_LOW_SPEED_TIME, 360);
curl_easy_setopt(curlPtr, CURLOPT_IGNORE_CONTENT_LENGTH, 1);
curl_easy_setopt(curlPtr, CURLOPT_TCP_NODELAY, 1);

即使我已设置超时,如果 6 分钟(360 秒)内没有收到任何字节,即使我收到响应,操作也会超时,

这是我从这里收到的 cURL 调试响应,

  • 操作在 360000 毫秒后超时,收到 205512 个字节
  • 关闭连接 #0
  • 已达到超时

我已将响应重定向到文件,并且可以确认响应字节。但是在恰好达到 6 分钟后,操作仍然会超时。

任何人都可以帮助我上面有什么我错了吗?

注意我使用的是 libcurl 7.19.3。我不能立即升级,但我们计划升级到最新的稳定版本。

谢谢, 普拉布

4

1 回答 1

1

您发布的仅有4 行中没有出现任何错误。

默认情况下,CURLOPT_TIMEOUT 和 CURLOPT_TIMEOUT_MS 的值为 0。但如果您使用特定的 curl 实现,请尝试在代码中将这些选项传递给 0。

如果它没有改变任何东西,那是因为它在 Web 服务器上超时。所以如果你没有这个服务器的控制权,你什么也做不了。您必须制作一个带有循环的程序才能重新启动连接。

于 2014-09-17T10:22:09.820 回答