リクエストを送信した後、HTTPクライアントが使用するソケットを正しく閉じたのはどうですか?または、完全な応答が受信されるまで開いておく必要がありますか(双方向)?その場合、要求本体の終わりはサーバーによってどのように決定されますか?HTTP:要求を送信した後に書き込みを行うためのシャットダウンソケット?
http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4によると、ソケットを閉じることはリクエストのオプションではありません。それは私にとって論理的ではありません。なぜなら、クライアントがソケットの半分を閉じた後に何かを送信しようとしなければ、半分閉じたTCP接続がサーバにとって問題になるのでしょうか?クライアントは引き続きデータを受け取ることができます。
ソケットの書き込み部分をシャットダウンすると、要求が完了したことをサーバーに伝える非常に現実的な方法になります。 http://docs.python.org/howto/sockets.html#disconnectingは、そのユースケースについても具体的に言及しています。
これが本当に間違っているのであれば、それは何ですか?私は本当に "Content-length"を送信するか、チャンクされたトランスポートを使用してサーバーが要求の終わりを正しく見つけることができるようにする必要がありますか?ボディの長さが不明なリクエストに対しては、どのように機能しますか?
チャンクされた転送エンコーディングを使用するか、または要求本体ですべての要求に "Content-Length"ヘッダーを送信することが必須ですか?私はそれが賢明なことだと認識していますが、実際には標準のどこかで指定されていますか? – lxgr
要求に本文がある場合は、本体のサイズを決定するための十分な情報をサーバーに含める必要があります。 RFC 2616のセクション4.3(メッセージ本文)と4.4(メッセージ長)を読んでください。 –