【问题标题】:Find IP Addresses of Local Servers查找本地服务器的 IP 地址
【发布时间】:2011-07-02 04:23:54
【问题描述】:

我想动态检索本地网络上服务器的 IP 地址。如何检索这些 IP 地址?


使用答案中的代码更新:

// Query for all the enabled network adapters 
ManagementObjectSearcher objSearcher = new ManagementObjectSearcher(
   "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled='TRUE'");    
ManagementObjectCollection objCollection = objSearcher.Get();

// Loop through all available network interfaces
foreach (ManagementObject obj in objCollection)
{
   // List all IP addresses of the current network interface
   string[] AddressList = (string[])obj["IPAddress"];
   foreach (string Address in AddressList)
   {
      MessageBox.Show(Address);
   }
}

code source

我使用此代码,但它只返回我自己电脑的 IP 地址,而不是网络中的所有 IP。

【问题讨论】:

  • 识别服务器的查询参数是什么?机器名称?什么是本地服务器?您是指您域中的服务器吗?请详细说明!
  • 是的,我的意思是域中的服务器。谢谢。
  • 你说你只想要服务器,定义一个服务器
  • 不,我想动态获取 ip。

标签: c# .net networking ip-address


【解决方案1】:

这可能非常困难,具体取决于网络的配置。如果它只是一个 windows 网络,并且您运行应用程序的帐户具有管理员权限,那会容易一些。

最好的方法是查询您的 PDC(主域控制器)。查看 System.DirectoryServices.ActiveDirectory 命名空间。

如果我没记错的话,你可以使用 LDAP 来查询域控制器——只要正确配置了 PDC!我发现这个 LDAP 查询可能会对您有所帮助:

"(&(objectCategory=computer)(|(operatingSystem=Windows Server*)(operatingSystem=Windows 2000 Server))))))"

当然,这只会查询 windows 2000 服务器 - 您应该可以根据需要进行修改。

查看以下链接:

http://www.google.co.uk/search?gcx=c&sourceid=chrome&ie=UTF-8&q=c%23+ldap+query

【讨论】:

    【解决方案2】:

    您是否查看过诸如 Apple 的 Bonjour (Zeroconf) 之类的发现协议。 http://en.wikipedia.org

    【讨论】:

      【解决方案3】:

      This 将让您通过名称获取机器的 IP 地址。这就是你要找的吗?

      【讨论】:

      • @na:这将让您获得网络上任何您拥有名称的机器的 IP(您可以看到)。您想如何区分什么是“服务器”?操作系统?
      • 你有更好的区分服务器ip的建议吗?
      • @na:这真的取决于您如何将机器定义为服务器,正如@Jimmy 和我所提到的。你知道你想要 IP 的“服务器”的机器名称吗?否则,您需要决定一种方法来区分您想要 IP 的机器与网络上的其他机器。在不了解您的业务需求的情况下,我不知道还能告诉您什么。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-23
      • 2017-06-20
      • 2020-10-03
      • 2012-02-01
      • 2015-01-08
      相关资源
      最近更新 更多