libcurl使用简单的界面回调函数

时间:2014-08-01 19:59:40

标签: c curl libcurl

我试图理解/确保libcurl使用的“回调函数”的本质。 像往常一样,在使用curl_easy_setopt设置所有选项后,我会调用curl_easy_perform。

但是当有一个回调函数时,libcurl实际上会在退出curl_easy_perform之前绝对返回所有数据。

据我所知,多接口可以提供非阻塞功能。但是“回调函数”意味着“稍后”,而其他东西正在发生,对吗?因此,对于简单的界面,它是否真的会阻塞,直到收到所有数据? 我该怎么测试呢?

我一直在研究,我在libcurl文档中引用了两个引号。但我一直试图理解回调函数和阻止方式的概念 http://curl.haxx.se/libcurl/c/curl_easy_perform.html

curl_easy_perform - 手册页:

  

curl_easy_perform以阻塞方式执行整个请求,并在完成后返回,或者如果失败则返回。有关非阻塞行为,请参阅curl_multi_perform。“

http://curl.haxx.se/libcurl/c/curl_multi_perform.html

curl_multi_perform - 手册页:

  

此函数处理所有需要以非阻塞方式注意的添加句柄的传输“

请注意,目的是确保在函数调用结束后,应用程序必须包含所有数据。我们严格按顺序做事,无法承受在不同时间飞来的大量数据。

1 个答案:

答案 0 :(得分:1)

是的,在整个请求完成之前,简单界面会阻塞。您可以通过执行大量请求并验证它是否以这种方式工作来测试这一点 - 或者只是信任文档以及依赖此行为的数千名用户。

"回调"意味着它们是你所写的功能,并且提供了“回叫”#34;从你调用的函数。所以,你调用curl_easy_perform(),然后libcurl本身根据文档一直回调你的回调函数,直到某些事情失败或传输完成,然后curl_easy_perform()再次返回你的程序。