相关疑难解决方法(0)

curl_easy_perform()是同步还是异步?

curl用来发送POSTGET请求,我使用回调函数来获取这些请求的回复.这些callback函数是静态成员函数,它们又调用非静态成员函数(您不能直接使用非静态成员函数,curl因此这种解决方法).

由于这些回调函数无法返回结果,因此我在C++类中使用一个属性来存储回复.这一切都很好,但现在我的问题.是否curl_easy_perform()阻止,直到整个请求被发送并且回复由回调函数处理或我的程序继续之后curl_easy_perform()是否在收到来自请求的回复时以某种方式被中断?

对我来说重要的是我想确保我的属性中应该包含回复的数据已经在那里,或者是否可能在此属性中仍然存在旧数据,因为尚未调用回调函数.

我意识到我的解释不是很清楚,所以如果你不明白,请告诉我,我会试着改写它.

谢谢!

c++ curl libcurl

14
推荐指数
1
解决办法
1万
查看次数

Libcurl C++:将请求发送到单个 URL 的非阻塞方式

目标:将请求发送到同一 URL,而不必等待请求发送函数完成执行。

目前,当我向 URL 发送请求时,我必须等待大约 10 毫秒才能得到服务器的响应,然后才能使用相同的函数发送另一个请求。目的是检测网页上的变化比程序当前执行的速度稍快,以便 WHILE 循环以非阻塞方式运行。

问题:使用 libcurl C++,如果我有一个 WHILE 循环调用一个函数来向 URL 发送请求,如何避免在向同一 URL发送另一个请求之前等待该函数完成执行?

注意:我一直在研究 libcurl,multi-interface但我正在努力确定该接口是否更适合对多个 URL 的并行请求,而不是将请求发送到同一 URL,而无需每次都等待该函数完成执行。我尝试了以下方法并查看了这些资源:

这是我向一个 URL 发送请求的尝试,但我必须等待该request()函数完成并返回响应代码,然后才能再次发送相同的请求。

#include <vector>
#include <iostream>
#include <curl/curl.h>

size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) {

        std::vector<char> *response = reinterpret_cast<std::vector<char> *>(userdata);
        response->insert(response->end(), ptr, ptr+nmemb);
        return nmemb;
}

long request(CURL …
Run Code Online (Sandbox Code Playgroud)

c++ https curl asynchronous libcurl

5
推荐指数
1
解决办法
2096
查看次数

标签 统计

c++ ×2

curl ×2

libcurl ×2

asynchronous ×1

https ×1