Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 写关闭后继续WinHTTP连接_Php_C++_Windows_Apache_Winhttp - Fatal编程技术网

Php 写关闭后继续WinHTTP连接

Php 写关闭后继续WinHTTP连接,php,c++,windows,apache,winhttp,Php,C++,Windows,Apache,Winhttp,我正在使用WinHTTP将数据发送到web服务器脚本,在某些情况下,我需要服务器终止传入的数据(因为这不是必需的),但仍然会向客户端应用程序返回响应。我从服务器端使用stream\u socket\u shutdown(stream\u shuth\u RD)来结束传入的数据,然后像正常情况一样发送响应。问题在于WinHTTP,我按预期从WinHttpWriteData()返回否定响应并停止发送数据,但当我调用WinHttpReceiveResponse()时,它返回false和GetLastE

我正在使用WinHTTP将数据发送到web服务器脚本,在某些情况下,我需要服务器终止传入的数据(因为这不是必需的),但仍然会向客户端应用程序返回响应。我从服务器端使用
stream\u socket\u shutdown(stream\u shuth\u RD)
来结束传入的数据,然后像正常情况一样发送响应。问题在于WinHTTP,我按预期从
WinHttpWriteData()
返回否定响应并停止发送数据,但当我调用
WinHttpReceiveResponse()
时,它返回false和
GetLastError()
返回
错误\u WinHTTP\u连接\u错误

是否有办法重置WinHTTP的内部错误条件?还是在服务器断开连接后以另一种方式接收响应

谢谢,
J

如果终止服务器端的连接,客户端的接收将失败。这就是WinHTTP的工作原理

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


为什么当服务器希望向客户端发送响应时,客户端仍在发送?在这种情况下,可能可以调整HTTP使用中隐含的协议,以减少从客户端发送不需要的数据。

连接没有完全终止,只是读取通道(从客户端写入),我希望这只会导致WinHttpWriteData()调用失败,而不是整个连接失败。服务器可以(而且确实)丢弃不需要的数据,但有时可能会有好几MB,因此首先停止发送数据会更有效。决定数据不需要的因素是HTTP报头,所以它确实需要立即发送一个响应。我不认为您可以在HTTP请求中间关闭一个套接字,并期望所有的工作都能完成;我很确定这违反了协议规范。