我已经用C语言编写了一个程序,可以向Web服务器发送HTTP 1.1 POST请求。使用wireshark监控时,服务器的响应时间不到一秒钟,就会收到HTTP/1.1 200 OK的消息。但是,接下来需要等待20秒才能收到FIN、ACK数据包,我认为这是导致recv返回0(表示没有更多数据)的原因。这使得我的程序在等待服务器发送FIN、ACK数据包的20秒内挂起。
我已经测试过HTTP 1.0,没有延迟出现。因此,我认为这是因为HTTP 1.1默认将所有连接视为持久连接所致。但是,我的Web浏览器使用HTTP 1.1没有延迟,所以我认为我的做法有些问题。
我的一个想法是,我应该在等待recv返回0之前,采取其他方法检查文档是否已经结束,但是我想不出任何方法来实现这一点。
如果有人能够解释一下正确的做法是什么,谢谢你们提前帮忙。
我已经测试过HTTP 1.0,没有延迟出现。因此,我认为这是因为HTTP 1.1默认将所有连接视为持久连接所致。但是,我的Web浏览器使用HTTP 1.1没有延迟,所以我认为我的做法有些问题。
我的一个想法是,我应该在等待recv返回0之前,采取其他方法检查文档是否已经结束,但是我想不出任何方法来实现这一点。
如果有人能够解释一下正确的做法是什么,谢谢你们提前帮忙。