Найти IP-адреса локальных серверов - PullRequest
4 голосов
/ 22 февраля 2011

Я хотел бы получить 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);
   }
}

код источника

Я использую этокод, но он возвращает только IP-адрес моего компьютера, а не все IP-адреса в сети.

Ответы [ 3 ]

1 голос
/ 09 декабря 2011

Это может быть довольно сложно, в зависимости от конфигурации сети.Если это только сеть 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

0 голосов
/ 22 февраля 2011

Вы смотрели на протокол обнаружения, такой как Bonjour от Apple (Zeroconf). http://en.wikipedia.org

0 голосов
/ 22 февраля 2011

Это позволит вам получить IP-адрес машины по имени.Это то, что вы ищете?

...