讀取內容部分代碼如下:
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模式。
uj5u.com熱心網友回復:
pbData[iReaded] = 0; //試試添加一個截至符號strOut += pbData;
uj5u.com熱心網友回復:
windbg里看的是pbData的內容,pbData里本身就錯了。
uj5u.com熱心網友回復:
如果接收的長度比上一次的短, pbData中就有可能包含了上次的資料資料, 因此加一個截斷符號,以避免這種問題。 留意下接收的長度
uj5u.com熱心網友回復:
用fidder抓包看看,包資料應該是不會有錯的,肯定是你處理讀取的時候錯了uj5u.com熱心網友回復:
主要還是資料接收欄位等,多列印一下看看,看是不是長度正確,處理也是對應的陣列轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/57528.html
標籤:基礎類
上一篇:關于執行緒退不出去的問題
