与HTTP 1.0相比,HTTP 1.1延迟20秒

时间:2011-09-30 23:07:34

标签: c windows http post

我在C中编写了一个向网络服务器发送HTTP 1.1 POST请求的程序 使用wireshark监视它,服务器响应并获取HTTP/1.1 200 OK消息需要不到一秒的时间,但是然后需要另外20秒来获取FIN, ACK数据包,我相信这是什么导致recv返回0,指定不再有数据。
导致我的程序挂起20秒,等待服务器发送FIN, ACK数据包。

我用HTTP 1.0对此进行了测试,没有延迟。所以我认为这是因为默认情况下HTTP 1.1会将所有连接视为persistent connections 但我的网络浏览器使用HTTP 1.1并且没有延迟,所以我认为我做的不对。

我有一个想法,而不是等待recv返回0,我应该检查我是否在文档的末尾以其他方式,但我想不出有任何办法这样做

所以如果有人能向我解释我应该怎么做呢?提前谢谢。

1 个答案:

答案 0 :(得分:6)

HTTP 1.1默认为keep-alive连接,而1.0不支持。您可以通过添加标题

来请求非保持活动状态
Connection: close

指示服务器在连接完成后立即关闭连接。