通过 Windows API 函数 NetShareEnum 或 WNetEnumResource 检索网络共享列表最多需要 60 (!!!) 秒来完成请求。也许有人知道为什么它这么慢?也许可以使用一些 API / 库(如 SMB)以合理的速度枚举共享?
1587 次
2 回答
1
至于为什么这么慢,如果主机不可用或由于任何原因(例如需要登录凭据)没有响应,Windows 将等待超过超时限制,对于网络中已知的每个共享(可以是每个主机多个)。Windows 的默认超时时间非常长。
将超时减少到 50 毫秒(在 LAN 中永远不应超过)可能会有所帮助,最终取决于测试的主机数量。
对于 API 的替代方案,我无能为力,抱歉。
于 2011-02-07T08:36:37.007 回答
1
您可能想尝试一些方法,即枚举与 Linux 相同的共享(您可以使用 LiveCD)。在我的测试中,我看到路由器还被要求提供可能的网络共享(我的路由器运行 Linux,这是我的 ISP 给我的,所以它可能很常见)。
因此,也许 Windows 长时间向路由器询问网络共享(这不应该发生......)并同步等待它以共享响应。
(将这个 API 设计为同步的天才是谁?)
于 2012-08-04T13:32:41.977 回答