1

チャンク転送エンコード データを送信するサーバーがあります。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」を読み取ろうとすると、機能しません。

クライアント側で必要な変更について教えてください。または、サーバー側で何か余分なものを処理する必要がありますか?

4

1 に答える 1