2016-07-21 1 views
1

Я использую библиотеку IPNetwork C# для поиска первого и последнего используемого IP-адреса. Я хочу добиться того, чтобы печатать или хранить в списке весь диапазон IP-адресов между первым и последним используемым IP-адресом. Я использую ниже, чтобы найти первый и последний используемый IP-адрес.Найти все IP-адреса между первым IP-адресом и последним IP-адресом

IPNetwork ipnetwork = IPNetwork.Parse("192.168.1.1/24"); 
    string first = ipnetwork.FirstUsable.ToString(); 
    string last = ipnetwork.LastUsable.ToString(); 

Если я прохожу чистую маску больше или равен 24, что довольно просто напечатать весь диапазон, так как с/24 в максимуме мы имеем 256 IP-адресов, 254 доступных для хоста и простой цикл будет генерировать весь диапазон, потому что будет изменен только четвертый октет. Однако, если я пропускаю маску сети меньше, чем \ 24 example \ 23, то третий октет также должен измениться, и простой цикл не будет выполнять эту работу, и нужно найти другое решение. Также параметр передан в IPNetwork.Parse может быть не обязательно 192.168.1.1 или 10.0.2.1, но 192.168.1.130 или 10.0.2.200 соответственно, что тоже нужно учитывать.

+0

Помогает ли это: http://stackoverflow.com/questions/1470792/how-to-calculate-the-ip-range-when-the-ip-address-and-the-netmask-is-given, и это http://stackoverflow.com/questions/14327022/calculate-ip-range-by-subnet-mask? –

+0

Вы пишете IPNetwork.Parse() или это предварительная библиотека? – Wamadahama

+0

Это уже существующая библиотека. – user2307236

ответ

1

Пример 8:

IPNetwork net = IPNetwork.Parse("192.168.0.1/23"); 
IPNetwork ips= IPNetwork.Subnet(net , 32); 

Console.WriteLine("{0} was subnetted into /{1} ips", net ,  ips.Count); 
Console.WriteLine("First: {0}", subneted[0]); 
Console.WriteLine("Last : {0}", subneted[subneted.Count - 1]); 
Console.WriteLine("All :"); 

foreach (IPNetwork ipnetwork in ips) 
{ 
    Console.WriteLine("{0}", ipnetwork); 
} 

Выход

192.168.0.1/23 was subnetted into /32 subnets 
First: 192.168.0.0/32 
Last : 192.168.1.254/32 
All : 
192.168.0.0 
192.168.0.1 
... 
192.168.1.254 

Удачи!

Смежные вопросы