1

com.sun.net.httpserver.HttpServerは単一接続のパイプラインをサポートしていますか?複数のクライアントを並行して処理しているように見えますが、単一の接続の要求が連続して実行されています。

これは正確ですか?もしそうなら、これを回避する方法はありますか?

4

2 に答える 2

0

HTTPパイプライニングとは、非常に単純なことを意味します。クライアントは、前の応答を読み取らなくても、接続に次の要求を書き込むことができます。

httpサーバーがパイプライニングをサポートしないことは非常に困難です。先を見越す必要があり、現在の要求を超えて使用可能なバイトが見つかった場合は、中止する必要があります...しかし、それはばかげており、誰もそれを行いません。

これは、リクエストがサーバーによってどのように処理されるか(シリアルまたはパラレル)とは関係ありません。もちろん、それを並行して行うことはより困難であり、解決しなければならないいくつかの質問があります。

于 2011-01-20T00:49:02.180 に答える
0

HTTP 1.1 に準拠した HTTP サーバーは、パイプラインをサポートすることが期待されています。パイプラインはクライアントでもサポートされていることに注意してください。httpサーバー
によると

API は、RFC 2616 (HTTP 1.1) および RFC 2818 (HTTP over TLS) の部分的な実装を提供します。

com.sun.net.httpserver.HttpServerが HTTP1.1 を完全にサポートしていないことを暗示しているようです。
HttpURLConnectionはパイプラインをサポートしていないため、 もパイプラインをサポートしていないと考えてcom.sun.net.httpserver.HttpServerいます。
あなたはいくつかのテストをしたと言います。これをどのようにテストしましたか?

更新:
注記から、パイプラインがサポートされているようです。
あなたが言うように、リクエストをパイプラインで送信すると、リクエストの到着に応じて応答が返されるはずです(各リクエストを完了するのにかかる時間とは関係ありません。つまり、一部のリクエストは他のリクエストよりも高速です)。

于 2011-01-19T21:11:39.740 に答える