日期:2014-05-16  浏览次数:20699 次

在使用libcurl编写FTP上传文件时怎样正确处理网线被拔?
我设置了CURLOPT_FTP_RESPONSE_TIMEOUT为3秒,但是在上传过程中我拔掉了网线发现程序依然停在那里不会从处理中返回。我希望能在一段时间后返回一个错误值给我。虽然用CURLOPT_TIMEOUT能从这种状态中返回,但是这个超时是针对整个FTP过程的,实际中不是太实用。每次FTP的总时间由于网络关系不便太固定。

请问有哪些东西我可能遗漏了?我看了官网的文档说明和一些例子甚至开发者的原话,似乎CURLOPT_FTP_RESPONSE_TIMEOUT就应该是我要找的选项,但不知为什么没起作用。。。。。。
------解决方案--------------------
http://blog.chinaunix.net/u1/57905/showart_1950598.html


7、CURLcode curl_easy_perform(CURL *handle);  //完成传输任务;返回0意味一切ok,非0代表错误发生
描述:这个函数在初始化CURL类型的指针 以及curl_easy_setopt完成后调用. 就像字面的意思所说perform就像是个舞台.让我们设置的option 运作起来.
参数:CURL类型的指针.
补充:
(1)在连接过程中,如果出现异常,如网线拔掉,返回CURLE_COULDNT_CONNECT;
(2)在下载过程中,即已经连接上了,后面如果出现异常,如网线拔掉,返回CURLE_OPERATION_TIMEOUTED
------解决方案--------------------
有深度的问题  来学习学习
------解决方案--------------------
我已经找到答案了。
感谢一楼。不过那个不是我要的。
CURLE_OPERATION_TIMEOUTED的返回可能是在等待很久后。

应该考虑的是CURLOPT_LOW_SPEED_LIMIT和CURLOPT_LOW_SPEED_TIME这两个option。原先的思路有问题导致我忽略了这两个参数。在libcurl的官网邮件列表里有大拿提到这两个东西我才突然想起。

共享出来各位共勉。
------解决方案--------------------
好办法,。