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
どこに閉じ込められているのか、または受信関数の実装に問題があるのかわかりません。ヒントや提案は大歓迎です。
よろしくお願いします。