libCurl下载中途断网问题

凌乱哥 2017-11-04 06:08:12
若正常下载一段时间后,进行网络中断, curl_easy_perform并不会返回失败,而是阻塞整个程序卡在这里。此时即使网络连接重新恢复, curl_easy_perform也无法恢复继续下载,导致整个程序出现”死机”状态
网上搜索后都是说添加超时设置,但是:

curl_easy_setopt(pCurl, CURLOPT_CONNECTTIMEOUT, 30);
//这个“连接超时”并不能检测到中途的断网操作


curl_easy_setopt(pCurl, CURLOPT_TIMEOUT, 30);
//这个超时则是固定时间断开一次,就算网络正常也会总是断。
//所以问题来了,假如要灵敏的检测到断网,就要把时间设置短一点
//但是时间太短的话正常下载流程也要频繁断开重连,太影响效率了吧



//有没有方法可以实现网络正常的时候持续下载不会断开,而一旦网络断开能较为灵敏的检测方法
...全文
1579 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuh421 2017-11-06
  • 打赏
  • 举报
回复
下载动作应该放到线程中去做. 然后超时, 一般是设置成5秒以上 超时重建连接. 要想快速判断到断开, 那是不容易完成的任务. 网络本身就有延迟的.
凌乱哥 2017-11-06
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
http://www.cnblogs.com/fnlingnzb-learner/p/6018433.html
这个看了,我最开始那段话就是从那里复制的
oyljerry 2017-11-05
  • 打赏
  • 举报
回复
http://www.cnblogs.com/fnlingnzb-learner/p/6018433.html

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧