2010-11-22 17 views
0

私はWinHTTPを使用してWebサーバースクリプトにデータを送信していますが、場合によっては受信データを強制終了する必要がありますが、依然としてクライアントに応答を返しますアプリ。私は、受信データを終了するためにサーバーの端からstream_socket_shutdown(STREAM_SHUT_RD)を使用して、通常の応答を返します。問題はWinHTTPにあります。私はWinHttpWriteData()から期待どおりに否定応答を返し、データの送信を停止しますが、WinHttpReceiveResponse()と呼ぶと、falseを返し、GetLastError()ERROR_WINHTTP_CONNECTION_ERRORを返します。書き込みシャットダウン後にWinHTTP接続を続行する

おそらくWinHTTPの内部エラー状態をリセットする方法はありますか?または、サーバーによって接続が切断された後に応答を受け取る別の方法はありますか?

おかげで、 J

+0

私は、HTTPリクエストの途中でソケットをシャットダウンするだけで、すべてが機能するとは思えません。私はこれがプロトコル仕様を破ると確信しています。 – Luke

答えて

0

サーバー側からの接続を殺す場合は、クライアント上で受信が失敗します。これは、WinHTTPが動作するように設計されている方法です。

サーバーが不要な受信データを破棄することはできませんか?

サーバが応答を送信する予定があるときにクライアントがまだ送信しているのはなぜですか?おそらく、このシナリオでは、クライアントからの不要なデータの送信を減らすために、HTTPの使用に含めるプロトコルを調整することができます。

+0

接続は完全に終了せず、読み込みチャンネル(クライアントからの書き込み)だけで、全接続ではなくWinHttpWriteData()呼び出しが失敗することを期待していました。サーバーは不要なデータを破棄することができますが、それは数MBになる場合もあり、最初に送信されるデータを停止する方が効率的です。データが必要でないかどうかを決定する要素はHTTPヘッダーなので、実際に応答をすぐに返す必要があります。 – JWood

関連する問題