在Windows 7上接受套接字需要一秒钟以上

ebu*_*ger 5 sockets windows-7

这就是我所做的:

  • 我写了一个最小的Web服务器(使用Qt,但我不认为它在这里是相关的).
  • 我在合法的Windows 7 32位上运行它.

问题:

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

线索:

  • 使用其他客户端(wget,自己只打开套接字的测试客户端)比Firefox,IE,Chrome,Safari看到新连接只需几毫秒.
  • 我安装了Apache并尝试了上面提到的客户端.按预期服务请求大约需要50毫秒.
  • 运行Windows XP(或在Linux下编译和运行相同的代码)时,此问题无法重现
  • 只有在连接到localhost时,问题似乎才出现.通过Internet连接并提供连接的朋友只需几毫秒.
  • 在不同端口运行服务器对1秒延迟没有影响

这是我没有运气的尝试:

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

有任何想法吗?这是Windows 7中的一些聪明的"安全功能"吗?为什么Apache不受影响?为什么只有浏览器受到影响?

War*_*ung 3

如果您说的是“localhost”而不是“127.0.0.1”,则您将在实际连接尝试之前强制进行名称查找,从而增加延迟。

此外,某些浏览器(例如 Firefox 3.5+)不使用操作系统的 DNS 查找机制,这就是为什么它的性能与 wget 等不同。