HTTP 接続を介してクライアント 1 からクライアント 2 に送信されるパケットがあります。このパケットをパケット 1 と呼びましょう。パケット 1 に対するクライアント 2 からの応答は期待できません。今度はパケット 2 を送信したいと思います。パケット 1 に対して送信された応答を読み取らずにパケット 2 を接続に書き込もうとすると、次のようになります。例外。パケット 1 の応答を読む必要があるのはなぜですか?
質問する
135 次
1 に答える
4
HTTP を使用している場合は、 HTTP 仕様に規定されている HTTP プロトコルに準拠する必要があります。これは、クライアントがサーバーに要求メッセージを送信し、サーバーが応答を送信することを意味します。クライアントは、接続で別のリクエストを送信する前に、そのレスポンスを完全に読み取る必要があります。
では、前のリクエストのレスポンスを読まずにリクエストを書く方法はありませんか?
いいえ、プロトコル違反になります。1 つまたは 2 つの要求に対しては機能する可能性がありますが、最終的にサーバーからクライアントへの接続側が「バックアップ」され、問題が発生します。HTTP はこのように動作することは想定されていません。
HTTP の要件に準拠したくない場合は、別のプロトコルを使用するか、独自のアプリケーション固有のプロトコルを発明する必要があります。
すぐに例外が発生する理由は明確ではありません。(例外が何であるか、または使用しているクライアント側のHTTPライブラリについては言及していません。)しかし、例外はHTTP実装からのものであり、APIを正しく使用していないことを示していると思います。
于 2012-10-11T11:37:26.107 に答える