linux – cURL:空闲超时间隔超过指定值
发布时间:2020-12-14 01:06:29 所属栏目:Linux 来源:网络整理
导读:我正在使用libcurl创建到服务器的http连接.在初始化期间,我指定了5秒的空闲超时值,并且还指定了进度回调函数.我期待cURL在5秒不活动后中止连接并停止调用进度回调但我发现卷曲在大约15秒后超时.为什么curl比我指定的更多时间超时?将超时设置为较大的值无济
我正在使用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); 编辑:超时代码 //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); 解决方法
我想出了这个. 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秒,从而使总时间约为5秒. 10秒
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |