通过CHttpFile read读取出来的数据有重复内容是怎么回事?

danxuezx 2019-01-02 12:06:29
读取内容部分代码如下:
do 
{
BYTE pbData[10 * 1024] = {'\0'};
iReaded = pHttpFile->Read( pbData, _countof(pbData) - 2 );
if (0 == iReaded)
{
break;
}
strOut += pwData;
}while (TRUE);

上面代码读取到的内容,最后一笔末尾出现了重复数据,详细如下:
通过wireShark抓取到的数据包内容如下:

但在windbg里看到上面代码read读回来的数据内容如下:

可以看到,在末尾多出来了 entREQ> 这7个字符。
这是为什么呢?

wireshark看到这笔数据内容比较大,服务器传输过来的数据采用的是chunked模式。
...全文
581 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2019-01-09
  • 打赏
  • 举报
回复
主要还是数据接收字段等,多打印一下看看,看是不是长度正确,处理也是对应的数组
yiyefangzhou24 2019-01-08
  • 打赏
  • 举报
回复
用fidder抓包看看,包数据应该是不会有错的,肯定是你处理读取的时候错了
zgl7903 2019-01-02
  • 打赏
  • 举报
回复
pbData[iReaded] = 0; //试试添加一个截至符号
strOut += pbData;

zgl7903 2019-01-02
  • 打赏
  • 举报
回复
引用 2 楼 danxuezx 的回复:
[quote=引用 1 楼 zgl7903 的回复:]
pbData[iReaded] = 0; //试试添加一个截至符号
strOut += pbData;

windbg里看的是pbData的内容,pbData里本身就错了。[/quote]
如果接收的长度比上一次的短, pbData中就有可能包含了上次的数据数据, 因此加一个截断符号,以避免这种问题。 留意下接收的长度

danxuezx 2019-01-02
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
pbData[iReaded] = 0; //试试添加一个截至符号
strOut += pbData;

windbg里看的是pbData的内容,pbData里本身就错了。

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧