0

現在、ブラウザ(FirefoxまたはChrome)とWebサーバー間のインターフェースのような単純なプロキシサーバーを作成しています。特定のポート(7777)にリクエストを送信するようにFirefoxを設定し、リクエストを取得するためにこのポートをリッスンし、インターネットに送信します応答を得ています。

Web サーバーへの非同期ソケット送信要求を使用して送受信する場合、Web サーバーが複数の部分 (8Kb) で 1 つの要求の応答を取得するため、応答の各部分をブラウザーにすぐに送信するため、Firefox への応答の送信に問題があります。今、ヘッダー情報を含むリクエストの最初の部分を送信しても問題はありませんが、GZip である残りのリクエストを送信したい場合、ブラウザでこの例外が発生します

FireFox :コンテンツ エンコーディング エラー 表示しようとしているページは、無効またはサポートされていない形式の圧縮を使用しているため、表示できません。

Chrome: エラー 330 (net::ERR_CONTENT_DECODING_FAILED): 不明なエラー。

しかし、sendcallback に sleep(1000) を入れると、正しく動作します

private void SendCallback(IAsyncResult ar)
{
    try
    {
        SendStateObject Result = (SendStateObject)ar.AsyncState;

        int ByteSend = Result.WorkSocket.EndSend(ar);
        System.Threading.Thread.Sleep(1000);
    }
    catch (Exception ex)
    {
        System.Windows.Forms.MessageBox.Show(ex.StackTrace);
    }
}

問題は何ですか?どうもありがとう

4

1 に答える 1

0

非同期ソケットを使用しているため、競合状態になる可能性があります。こちらをご覧ください: http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx

于 2013-03-31T19:48:22.933 に答える