【问题标题】:libCURL timeout while receiving HTTP multi-part flow接收 HTTP 多部分流时的 libCURL 超时
【发布时间】:2017-07-20 16:06:41
【问题描述】:

我正在使用libCURL 向设备执行 HTTP GET 请求,该设备以多部分 HTTP 响应中的连续数据流进行响应。

我想处理设备断开/关闭或在网络上不再可访问的不幸但可能的情况。
默认情况下,libCURL 没有我需要的几秒钟超时,所以我尝试了:

  1. 设置 CURLOPT_CONNECTTIMEOUT 选项,
    但这仅在连接阶段有效,在已经接收数据时无效。

  2. 设置CURLOPT_TIMEOUT 选项,
    但这似乎总是强制超时,即使仍然收到数据。

我的问题是:在上述情况下,如何正确处理 libCURL 超时?

【问题讨论】:

    标签: c++ timeout libcurl


    【解决方案1】:

    针对您的场景而不是

    curl_easy_setopt(curl, CURLOPT_TIMEOUT, <your timeout in seconds>);
    

    使用

    curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 1);
    curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, <your timeout in seconds>);
    

    以上两行确保如果平均速度在 X 秒的时间范围内下降到每秒 1 个字节以下,则操作被中止(超时)。

    reference here

    【讨论】:

      猜你喜欢
      • 2013-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多