libcurl在writefunction回调后继续运行

时间:2018-01-07 11:26:39

标签: c libcurl pushbullet

我正在尝试使用pushbullet api在C中使用libcurl库。我正在尝试连接到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()函数来运行getwss_cb()

后继续运行

1 个答案:

答案 0 :(得分:1)

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

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

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

另请注意,传递给回调的数据零终止,因此您无法打印它。