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

标签 c windows http post

我用 C 语言编写了一个程序,用于向 Web 服务器发送 HTTP 1.1 POST 请求。
使用 wireshark 对其进行监控,服务器响应并获得 HTTP/1.1 200 OK 消息所需的时间不到一秒,但随后又需要 20 秒才能获得 FIN, ACK 数据包,我相信这就是导致 recv 返回 0 的原因,没有指定更多数据。
导致我的程序挂起 20 秒,等待服务器发送FIN, ACK 数据包。

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

我的一个想法是与其等待 recv 返回 0,不如通过其他方式检查我是否在文档末尾,但我想不出任何方式做这个。

那么,如果有人可以向我解释我应该如何做呢?提前致谢。

最佳答案

HTTP 1.1 默认保持连接,而 1.0 则没有。您可以通过在 header 中添加来请求非保持事件状态

Connection: close

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

关于c - 与 HTTP 1.0 相比,HTTP 1.1 延迟 20 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7616938/

相关文章:

c - gdb 以信号终止?,未知信号

从指针转换为不同大小的整数。编译错误

java - 需要 JNI 或更简单的东西吗?

c - 如何检查 Windows 用户是否具有 C 中的管理员权限?

c++ - CArray 不取消分配内存

c# - 如何在 C# 中获取当前用户的 Local Settings 文件夹路径?

c++ - C++ HTTP客户端recv()和写入文件问题

c - 宏定义

java - 如何使用基于电子邮件地址的用户名对浏览器进行基本身份验证?

django - 有什么理由不在 Django 中将 USE_ETAGS 与 CommonMiddleware 一起使用?