1

簡単なプロキシ サーバーを作成しました。正常に動作しますが、gzip 解凍は動作しません:

  1. マジックナンバーが正しくありません。必ず。
  2. エラーはありませんが、gzipstream は解凍されません。

次のように機能します。

private void HandleTraffic()
{
    while ((bytesRead = realServer.Receive(buffer, 0, BODYBUFFERSIZE, SocketFlags.None)) > 0)
    {
        decompressedBuffer = new byte[BODYBUFFERSIZE];
        if (t == "gzip")
        {

            MemoryStream outputStream = new MemoryStream(), inputStream = new MemoryStream();
            inputStream.Write(buffer, 0, bytesRead);
            inputStream.Position = 0;
            inputStream.Flush();
            using (GZipStream gz = new GZipStream(inputStream, CompressionMode.Decompress))
            {
                gz.CopyTo(outputStream);
            }

            decompressedBuffer = outputStream.ToArray();

            MessageBox.Show(ASCIIEncoding.ASCII.GetString(decompressedBuffer));
        }
    }
}

InputStream は満たされていますが、outputStream が解凍されていないか、「マジック ナンバーが正しくありません」というエラーが表示されます。

この仕事では、ソケットが必要です。

4

2 に答える 2

0

プロキシサーバーでデータを処理する必要はありません。解凍、デフレーションなどは一切必要ありません。バイトをコピーするだけです。確認する必要がある唯一のデータは、クライアントからの最初の行であるHTTPCONNECTコマンドです。

于 2012-10-22T09:07:52.637 に答える
0

私自身のこれに対する解決策は、Fiddler をオフにすることでした。

于 2013-02-27T17:32:17.047 に答える