Получить ВСЕ IP-адреса, содержащие X hostname в локальной сети (несколько одинаковых имен хостов)

#c# #asp.net #network-programming #ip-address #hostname

#c# #asp.net #сетевое программирование #ip-адрес #hostname

Вопрос:

Я пытаюсь перебрать все IP-адреса в пределах диапазона (192.168.1.1 — 192.168.1.255) и распечатать IP-адрес, содержащий X hostname.

Я пытаюсь использовать этот код, но он дает мне только последний IP-адрес, который содержит X имя хоста, но есть несколько IP-адресов с этим именем хоста:

 string customPc = "myCustomPc";
            IPHostEntry host = Dns.GetHostEntry(customPc);

            foreach (IPAddress theaddress in host.AddressList)
            {
                Console.WriteLine(theaddress.ToString());
            }
 

кроме того, я пытаюсь сделать это таким образом, но он выводит тот же результат — последний IP-адрес с этим именем хоста:

 string host = "myCustomPc";
                IPHostEntry hostEntry;

                hostEntry = Dns.GetHostEntry(host); 

                if (hostEntry.AddressList.Length > 0)
                {
                    var ip = hostEntry.AddressList[0];
                    Console.WriteLine(ip   ": Your custom PC is found!");
                }`
 

Ответ №1:

Проблема в том, что вы печатаете только один элемент из коллекции AddressList?

Попробуйте это:

 foreach(var a in hostEntry.AddressList) {
  Console.WriteLine(a   ": Your custom PC is found!");
}
 

или используйте метод Dns.GetHostAddresses(String)

 foreach(var a in Dns.GetHostAddresses(host)) {
  Console.WriteLine(a);
}
 

как я могу выполнить цикл с 192.168.1.1 до 192.168.1.255

Вот один из способов

 for(int d = 1; d <=255; d  )
{
   var ipstr = $"192.161.1.{d}";
}
 

Комментарии:

1. Я попробовал, он дает мне только один IP-адрес, но в моей локальной сети около 7-10 компьютеров с тем же именем хоста