341*_*008 5 linux curl timeout
我libcurl用来创建到服务器的http连接.在初始化期间,我指定了5秒的空闲超时值,并且还指定了进度回调函数.我期待cURL在5秒不活动后中止连接并停止调用进度回调但我发现卷曲在大约15秒后超时.为什么curl比我指定的更多时间超时?将超时设置为较大的值无济于事.如果我指定100秒,则在105秒不活动后超时.
code = s_curl_easy_setopt(m_curl_handle, CURLOPT_NOPROGRESS, 0);
assert(code == CURLE_OK);
code = s_curl_easy_setopt(m_curl_handle, CURLOPT_PROGRESSFUNCTION, progress_callback);
assert(code == CURLE_OK);
Run Code Online (Sandbox Code Playgroud)
编辑:超时代码
//this will set the timeout for quitting in case the network goes down
code = s_curl_easy_setopt(m_curl_handle, CURLOPT_LOW_SPEED_LIMIT, 1);
code = s_curl_easy_setopt(m_curl_handle, CURLOPT_LOW_SPEED_TIME, m_idle_timeout);
Run Code Online (Sandbox Code Playgroud)
我想出了这个.cURL大约每秒更新一次进度.要计算空闲超时,cURL计算6次更新的平均字节数/秒,并将其与CURLOPT_LOW_SPEED_LIMIT.如果此值在一段时间内CURLOPT_LOW_SPEED_LIMIT小于CURLOPT_LOW_SPEED_TIME秒,则超时.因此,如果CURLOPT_LOW_SPEED_TIME是5秒,则cURL将计算最近6次进度更新(大约5秒)内的平均字节数/秒,然后检查它是否小于CURLOPT_LOW_SPEED_LIMIT至少5秒,从而获得大约的总时间.10秒
| 归档时间: |
|
| 查看次数: |
4501 次 |
| 最近记录: |