Curl 的CURLOPT_XFERINFOFUNCTION回调返回 dlnow > dltotal

Curl's CURLOPT_XFERINFOFUNCTION callback returns dlnow > dltotal

本文关键字:dlnow gt dltotal 返回 回调 CURLOPT XFERINFOFUNCTION Curl      更新时间:2023-10-16

我一直在使用CURL进行所有HTTP通信。我需要知道服务器何时完成向我发送响应。根据 CURL 文档CURLOPT_XFERINFOFUNCTION就是为了做到这一点而设计的。

但是,每次调用函数被命中时,所有参数要么全部为 0,要么除了 dlnow (233)之外全部为 0。这不是预期的行为,我在谷歌搜索后还没有发现有类似问题的人。

回调发起:

curl_easy_setopt(handle, CURLOPT_XFERINFOFUNCTION, CLibCurlThreadTask::CurlProgress);
curl_easy_setopt(handle, CURLOPT_NOPROGRESS, 0L);

回调函数:

int CLibCurlThreadTask::CurlProgress(void *clientp,   curl_off_t dltotal,   curl_off_t dlnow,   curl_off_t ultotal,   curl_off_t ulnow)
{   
if( dltotal > 0 || dlnow > 0 || ultotal > 0 || ulnow > 0)
    {
        CryLogAlways("UP: %" CURL_FORMAT_CURL_OFF_T " of %" CURL_FORMAT_CURL_OFF_T "  DOWN: %" CURL_FORMAT_CURL_OFF_T " of %" CURL_FORMAT_CURL_OFF_T "rn", ulnow, ultotal, dlnow, dltotal);
    }   
    return CURLE_OK;
}

输出:

上: 0 的 0

下: 233 的 0

上: 0 的 0

下: 233 的 0

上: 0 的 0

下: 233 的 0

上: 0 的 0

下: 233 的 0

这可能是 32 位/64 位平台的问题。

请参阅: http://forum.lazarus.freepascal.org/index.php?topic=29767.0