2010-11-22 75 views
0

我正在使用WinHTTP将数据发送到Web服务器脚本,并且在某些情况下,我需要服务器杀死传入数据(因为它不是必需的),但仍会向客户端返回响应应用程序。我使用服务器端的stream_socket_shutdown(STREAM_SHUT_RD)来结束传入的数据,然后像往常一样发回响应。问题在于WinHTTP,如预期的那样,我从WinHttpWriteData()得到否定响应并停止发送数据,但是当我呼叫WinHttpReceiveResponse()时,它返回false,GetLastError()返回ERROR_WINHTTP_CONNECTION_ERROR写入关机后继续WinHTTP连接

有没有办法来重置WinHTTP的内部错误条件?或者在服务器断开连接后接收响应的另一种方式?

感谢, Ĵ

+0

我不认为你可以在HTTP请求的中间关闭一个套接字,并期望一切正常;我很确定这打破了协议规范。 – Luke 2010-11-22 18:54:42

回答

0

如果你杀了从服务器端的连接,接收客户端将失败。这是WinHTTP的设计工作原理。

您的服务器不能丢弃不需要的传入数据吗?

为什么你的客户端在服务器期望发送响应时仍在发送?也许可以调整HTTP使用中暗示的协议,以减少在这种情况下从客户端发送不需要的数据。

+0

连接并不完全死亡,只是读通道(从客户端写入),我希望这只会失败WinHttpWriteData()调用,而不是整个连接。服务器可以(并确实)丢弃不需要的数据,但有时可能会有几MB,并且停止首先发送数据会更有效。决定数据不需要的因素是HTTP头,因此它确实需要立即发送回应。 – JWood 2010-11-22 16:28:30