c ++ libCurl:发布回调函数以发送多个字节

时间:2016-03-11 10:26:01

标签: c++ curl callback byte libcurl

我使用Libcurl帖子回调从文件发送数据。示例here显示了如何从回调函数发送每个调用1个字节的数据。 我已经更改了代码,因此文件被读入块。这几乎可以正常工作。

目前的示例代码是:

if(sizeleft){
 *( char *)ptr = readptr[0]; 
   readptr++;
   sizeleft--;
  return 1;
}
  

此示例将数据发送为1个字节。   但是假设我必须发送多个字节。我试图增加readptr by two each time and decreasing sizeleft by tworeturn 2bytes at a time

它没有像这样工作,数据已损坏。

如果那里有人可以帮助我,我将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:2)

很难从你的问题中准确地判断出你正在做什么,确切地说你期望发生什么以及究竟发生了什么。然而,看起来你正走在正确的轨道上。

CURLOPT_READFUNCTION的documentation表明size * nitems(示例中为size * nmemb)是您可以写入的字节数的上限 { {1}},函数的返回值是您编写的实际字节数。返回零意味着您已经编写了您想写的所有内容,并且您的回调函数不再被调用。

如果从函数返回的值不等于实际写入缓冲区的字节数,那么您可能会发现损坏。

PS:像:

buffer