我想自定义接收功能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
)该服务器已响应。
我不知道我被困在哪里,或者接收函数实现有什么问题。任何提示或建议将不胜感激。
谢谢和最好的问候。