在 Windows 7 上接受套接字上的连接需要一秒以上的时间

在 Windows 7 上接受套接字上的连接需要一秒以上的时间

以下是我所做的:

  • 我编写了一个最小的网络服务器(使用 Qt,但我认为它与此无关)。
  • 我在合法的 Windows 7 32 位上运行它。

问题:

  • 如果我使用 Firefox、IE、Chrome 或 Safari 发出请求,我的服务器需要大约一秒钟才能看到有新的连接被接受。

线索:

  • 使用其他客户端(wget,自己只打开套接字的测试客户端)比 Firefox、IE、Chrome、Safari 看到新连接只需几毫秒的时间。
  • 我安装了 Apache 并尝试了上面提到的客户端。处理请求的时间约为 50 毫秒,正如预期的那样。
  • 在运行 Windows XP 时(或在 Linux 下编译并运行相同的代码)无法重现该问题
  • 问题似乎仅在连接到本地主机时才会出现。一位朋友通过互联网连接并提供服务仅需几毫秒的时间。
  • 在不同的端口运行服务器对 1 秒延迟没有影响

以下是我尝试过但没有成功的方法:

  • 已停止 Windows Defender 服务
  • 停止 Windows 防火墙服务

有什么想法吗?这是 Windows 7 中的一些巧妙的“安全功能”吗?为什么 Apache 不受影响?为什么只有浏览器受到影响?

答案1

我同意 MidnighToker 的观点 - 是否只有当您点击“localhost”时才会出现延迟,还是本地 IP 地址也会出现延迟?如果只有当您瞄准“localhost”时才会出现延迟,请检查您的主机文件中是否有奇怪的条目。Windows Vista 和 7 还包括 IPv6 的 HOSTS 条目(“::1 localhost”)。

由于我亲眼见过未使用的 IPv6 连接在启用但未使用时会减慢 Ubuntu 上 Firefox 中的网页浏览连接速度,并且读到其他人在 Windows 中也遇到了类似的情况,所以这可能是需要考虑的事情(我个人在 Vista 或 Win7 中都没有遇到过这个问题)。

在 Ubuntu 下,Firefox 有自己的“不使用 IPv6”设置,可以修复延迟,而无需进行系统范围的网络更改;所以也许 Windows 版 Firefox 也有这个功能(不知道,我在 Windows 中使用 IE):

下面介绍了如何在 Firefox 中禁用它,至少可以开始测试该理论:

1.类型关于:配置在地址栏中按 Enter。

2.查找网络.dns.禁用IPv6在列表中。

3.右键单击 -> 切换(您希望将其设置为'真的' 禁用)

4. 重新启动 Mozilla 应用程序并重试。

答案2

而不是连接到localhost,如果你连接到你的真实的(但本地) IP 地址?

例如http://192.168.1.1/

相关内容