0

我正在尝试将 C 中的 libcurl 库与 pushbullet api 一起使用。我正在尝试连接到https://stream.pushbullet.com/streaming/上的流。问题是一旦接收到任何数据时调用回调函数,连接就会关闭。我想让它无限期地运行,并让它在每次接收新数据时调用回调函数。

这是我尝试过的代码

#include <stdio.h>
#include <string.h>
#include <curl/curl.h>

int getwss_cb(char *data) {
    printf("Received data: %s\n", data);
}

int getwss(void) {
    CURL *easyhandle = curl_easy_init();

    curl_easy_setopt(easyhandle, CURLOPT_URL, "https://stream.pushbullet.com/streaming/<access-token>");
    curl_easy_setopt(easyhandle, CURLOPT_WRITEFUNCTION, getwss_cb);
    curl_easy_perform(easyhandle);
    return 0;
}

基本上,即使在运行 getwss_cb() 之后,我也需要 getwss() 函数继续运行

4

1 回答 1

1

您的回调没有使用正确的原型,也没有返回正确的返回码:

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

请参阅解释回调的完整文档以及它应该在CURLOPT_WRITEFUNCTION选项的文档中返回的内容。

另请注意,传递给回调的数据不是以零结尾的,因此您不能只 printf-%s 它。

于 2018-01-09T03:46:56.703 回答