我想动态检索本地网络上服务器(或多个服务器)的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);
}
}
我使用此代码但它只返回我自己的PC的IP地址,而不是网络中的所有IP。
答案 0 :(得分: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
答案 1 :(得分:0)
This可让您按名称获取计算机的IP地址。那是你在找什么?
答案 2 :(得分:0)
您是否看过Apple的Bonjour(Zeroconf)等发现协议。 http://en.wikipedia.org