【问题标题】:Where does NetServerEnum get its list of machines from?NetServerEnum 从哪里得到它的机器列表?
【发布时间】:2009-04-27 11:27:47
【问题描述】:

NetServerEnum() 从哪里得到它的机器列表?

它是否使用计算机浏览器服务,或者如果 AD 可用,它是否会使用 AD 作为首选项?

链接:

【问题讨论】:

  • 您可以做的一件事是运行 WireShark 之类的东西,看看您是否可以确定在调用 NetServerEnum 时启动的流量类型。我怀疑它只是针对 AD,在这种情况下您可能会看到 LDAP 查询。

标签: c# networking netapi32


【解决方案1】:

来自浏览器服务。 NetServerEnum 早于 Active Directory,并且必须在非 AD 系统上运行。如果找不到浏览服务器,NetServerEnum 将返回 6118(无浏览器)。我认为 AD 具有用于此类任务的 ADSI 接口,但我从未针对 AD 进行编程。

请注意,NetServerEnum 在大型域上可能会非常慢:我通过尝试将 NSE 用于基本的“发现”算法而发现了这一点。很快就吸取了教训,并为该任务切换到 UDP。

【讨论】:

  • 嗨 Bob,我遇到了与 NetServerEnum 函数停止相同的问题。当您说您使用的是 UDP 时,您究竟是如何使用该协议的?感谢您的帮助。
  • 在启动时使用 sendto 和 INADDR_BROADCAST 广播(小)UDP 数据包。在 ping 消息中,放置发起者的数据,例如 IP 地址。 (慢慢地)做几次,因为 UDP 不可靠。如果 rxr 当前没有与始发者的 TCP 连接,则当它接收到 ping 时,它会尝试通过 TCP 连接回来。注意:不能通过路由器工作:您需要为这种情况维护自己的 IP 连接列表。无法发布代码,它属于我的雇主。注意:在 IPv6 下没有等价物,您需要多播。
猜你喜欢
  • 1970-01-01
  • 2012-07-04
  • 2016-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多