我一直在StackOverFlow上搜索解决方案,似乎找不到答案,我使用WinSock2登录网站,服务器响应"连接:关闭&#34 ; (即使我发送Connection:keep-alive)也在标题中。在返回0之后尝试recv的任何消息。(0 =正常关闭)
问题:
在POST请求后连接是否会丢失?
如何在删除后发送后续GET / POST请求?
那么你是否必须回收套接字并重新建立所有内容,如下面的示例所示?
事件列表示例(我想象我需要这样做):
---发布后连接关闭---
这就是我想象事件链的样子,但我并不是百分之百确定浏览器如何处理这一切。但我从其他用户的经验和输入中学习,所以如果有人确切知道发生了什么让我知道。谢谢你的时间,
答案 0 :(得分:2)
在POST请求后连接是否会丢失?
可以,是的。 HTTP是无状态协议,即使请求保持活动,也无法保证连接在响应后保持活动状态。发送响应后是否关闭连接由服务器决定,如果客户端没有请求关闭连接。
如何在丢弃后发送后续GET / POST请求?
在发送新请求之前,您别无选择,只能重新连接到服务器以及涉及的所有内容(TCP握手,SSL / TLS握手等)。
如果你:
发送不明确声明Connection: keep-alive
的HTTP 1.0请求,或者接收未明确声明{{1}的HTTP 1.0响应}}
发送明确指出Connection: keep-alive
的HTTP 1.1请求,或接收明确指出Connection: close
的HTTP 1.1响应
然后,您必须在阅读回复后关闭连接的末尾。
即使响应表明保持活动有效,在您在同一连接上发送下一个请求之前,连接仍可能超时并关闭。
因此,每当您想要发送新请求时,如果先前已经关闭了连接,或者在发送请求时出现连接错误,请关闭套接字,重新连接并重新发送请求。
那么你是否必须回收套接字并重新建立所有内容,如下面的示例所示?
可能,是的。
我不是100%确定浏览器如何处理这一切。
正如上文所述。
这在RFC 2616 Section 8 "Connections"中进一步讨论。