linux c http 服务端,使用CHttpFile从服务器端正确的读取数据

前段时间在给软件做升级提示模块的时候发现一个问题,就是使用CHttpFile对象无法从服务器端获取到正确的响应数据长度,无论是使用CHttpFile:: QueryInfo方法,还是使用CHttpFile:: GetLength方法,每次获取的长度都不固定,造成读取数据错误。万般无奈,最后只能采用动态数组的办法来解决这个问题,代码如下:

#define READ_BUFFER_LENGTH 1024

#define PAGE_BUFFER_SIZE 1024*4

char* CHttpClient::ReadData( CHttpFile* pFile )

{

char* pUtf8 = (char*)malloc(PAGE_BUFFER_SIZE);

UINT bufLen = PAGE_BUFFER_SIZE;

UINT recLen = 0;

UINT recSize = 0;

char* pDest = pUtf8;

while ((recLen = pFile->Read(pDest, READ_BUFFER_LENGTH)) > 0)

{

recSize += recLen;

if(recSize + READ_BUFFER_LENGTH > bufLen)

{

bufLen += PAGE_BUFFER_SIZE;

pUtf8 = (char*)realloc(pUtf8,bufLen);

pDest = pUtf8 + recSize;

}

else

{

pDest += recLen;

}

}

pUtf8[recSize] = '\0';

return pUtf8;

}

0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值