4

私は、必要に応じてリクエストを理想的にパイプライン処理する HTTP クライアントに取り組んでいます。また、要求は特定のネットワーク インターフェイスで送信されます (クライアントはマルチホームです)。

非同期ソケットが使用され、リクエストを行うために、次のコードを使用します。

        Uri url = new Uri(reqUrl);
        ServicePoint sp = ServicePointManager.FindServicePoint(url);
        sp.BindIPEndPointDelegate = new BindIPEndPoint(localBind);

        pseg.req = (HttpWebRequest)HttpWebRequest.Create(url);
        pseg.req.AddRange("bytes", psegStart, psegStart + psegLength - 1);
        pseg.req.KeepAlive = true;
        pseg.req.Pipelined = true;

このコードを使用して作成されたリクエストごとに、サーバーへの個別の接続が開かれ、セグメントが並行して受信されます。これは問題ありませんが、私が望む動作ではありません。要求をパイプライン処理したいのですが、応答は順番に到着するようにします。ロックを使用するか、接続制限を 1 に設定すると、セグメント #1 が完全に受信されるまで、セグメント #2 の要求は送信されません。

私が望むものを達成し、引き続き HttpWebRequest/Response-classes を使用する方法はありますか? または、ソケットにドロップダウンする必要がありますか?

4

0 に答える 0