チャンク転送エンコード データを送信するサーバーがあります。InternetReadFile を使用してデータを読み取りますが、最初のチャンクを読み取った後、InternetReadFile は 12004 で失敗します。フィドラー (Wireshark) を使用して受信データを傍受しました。Wireshark は 2 番目のチャンクを表示しますが、InternetReadFile API は失敗します。
サンプルコード:
CString totalbuffer ;
While ( 1 )
{
char recv [ 10 ] = '\0' ;
DWORD dwBytesRead = 0 ;
if ( InternetReadFile ( httpSocket.hReq , recv, 10 , &dwBytesRead ) )
{
recv[ dwBytesRead] = '\0' ;
totalbuffer += recv ;
printf ( " received buffer : %s" , recv ) ;
return 1 ;
}
else
{
printf ( " InternetReadFile failed with : %d" , GetLastError ( ) ) ;
return 0 ;
}
};
WireShark は次のように表示します。
HTTP/1.1 200 OK
Transfer-Encoding: チャンク
日付: 2014 年 9 月 18 日 (木) 14:16:16 GMT
サーバー: CHND
3
わかりました\n
3
CMD
クライアントは最初の 3 バイトのチャンクのみを読み取ります。次の 3 バイトのチャンク「CMD」を読み取ろうとすると、機能しません。
クライアント側で必要な変更について教えてください。または、サーバー側で何か余分なものを処理する必要がありますか?