【发布时间】:2013-01-25 11:25:48
【问题描述】:
我正在使用 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。我无法立即升级,但我们计划升级到最新的稳定版本。
谢谢, 普拉布
【问题讨论】:
-
服务器可能会让你超时并关闭连接(在客户端你几乎无法阻止它)。如果没有数据流下,服务器保持连接打开将是一个安全漏洞(攻击者可以发起 DOS 攻击并最终使用所有可用连接打开与服务器的许多连接)。
-
你有没有收到任何 HTTP 代码>
-
PS:传递给 curl_easy_setopt 的大多数(整数)值应该是长整数。您正在传递整数。这可能是未来的一个问题。使用
curl_easy_setopt(curlPtr, CURLOPT_LOW_SPEED_TIME, 360L); -
请在下面找到我的帖子并告诉我有什么问题