gpt4 book ai didi

c - 如何在 libcurl 中自定义 WRITEFUNCTION 以接收大数据流(高达 10K)?

转载 作者:太空宇宙 更新时间:2023-11-04 04:02:02 27 4
gpt4 key购买 nike

我想为 libcurl 自定义接收函数以接收大数据(可能高达 10K)。

我目前的实现如下:

static size_t wt_callback(char *ptr, size_t size, size_t nmb,
void *data) {
int len = size * nmb;

struct response *rsp = (struct response *)data;
int byte = len < rsp->buf_left ? len : rsp->buf_left;
if (rsp->buf_offset == 0) {
memset(rsp->buffer, 0, rsp->buf_left);
}
memcpy(rsp->buffer + rsp->buf_offset, ptr, byte);
rsp->buf_offset += byte;
rsp->buf_left -= byte;

return byte;
}

和结构定义:

struct response {
char *buffer;
int buf_left;
int buf_offset;
};

我安装自定义接收函数:

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, wt_callback);
/* How data is received */
curl_easy_setopt(curl, CURLOPT_WRITEDATA, response);
/* Where to store incoming data */

response 的类型为 struct response *

当前的问题是 wt_callback 函数没有被调用,虽然我确定(我用 wireshark 嗅探网络)服务器响应了。

我不知道自己被困在哪里,也不知道接收函数的实现有什么问题。任何提示或建议将不胜感激。

谢谢并致以最诚挚的问候。

最佳答案

如果没有调用写入回调,那么问题几乎不可能是回调函数本身。由于您没有向我们展示其余的代码,我们真的很难猜测。或许您可以从具有我们已知的类似功能的示例代码中找到灵感:

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

关于c - 如何在 libcurl 中自定义 WRITEFUNCTION 以接收大数据流(高达 10K)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10600665/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com