2012-04-03 2 views
1

Я пишу небольшое приложение для автоматической загрузки большого количества материалов, которые мы должны делать ежедневно, при настройке новых машин. У меня есть колоссальные 18 новых ящиков для настройки сейчас, поэтому мне действительно нужно добавить эту небольшую добавленную функцию, которая позволяет мне более легко добавлять IP-адреса.Программно добавляя статический IP-адрес

Моя функция, которая генерирует подсеть на основе номера блока, работает нормально, но я хотел бы иметь возможность вводить что-то вроде 192.168.1.10/29 и добавить в него все 5 IP-адресов. Моя функция добавления IP работает нормально, но мой вопрос ...

Нужно ли мне вручную его кодировать так? (Очевидно, что псевдо-код, а не рабочий пример)

int 29block = 5 
int 28block = 12 

for (i = 0; i<29block; i++) 
{ 
    string ip = ipinputbox.text; 
    ip = ip + 2 + i; // 2 being the value to compensate for gateway/etc. 
    AddIpAddress(ip); 
} 

enter image description here

+0

Какие 5 адресов будут добавлены для вашего примера, '192.168.1.10/29'? – mellamokb

+0

Вот один из наших блоков 72.26.196.160/29. Так что .162 - .166 были бы адресами, которые мне нужно было добавить в сетевой адаптер. –

+0

Поскольку '72.26.196.160/29' включает в себя допустимые хосты, все из которых находятся в диапазоне .161' на' .166', как программа должна знать фактический диапазон, должна включать только '.162' в' .166'? – mellamokb

ответ

0

Я взбитыми класс, который может интерпретировать адрес подсети и вернуть перечислимого коллекцию адресов, представленных этой подсети. Так, например, подсеть ip 192.168.1.10/29 должна возвращать все адреса после (и включая) 192.168.1.10, которые попадают в подсеть, представленную /29, что является маской 255.255.255.248. В этой подсети есть шесть действительных хостов, .9 - .14. Так что список вернулся бы

192.168.1.10 
192.168.1.11 
192.168.1.12 
192.168.1.13 
192.168.1.14 

Вот пример кода, я использую (в LINQPad): http://pastebin.com/d6EE2bpj, а выходной образец генерируется тестовый код:

==192.168.1.10/29== 
192.168.1.10 
192.168.1.11 
192.168.1.12 
192.168.1.13 
192.168.1.14 
==72.26.196.160/29== 
72.26.196.161 
72.26.196.162 
72.26.196.163 
72.26.196.164 
72.26.196.165 
72.26.196.166 

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

+0

Отлично, большое вам спасибо! –

+0

@BrettPowell: Просто хотел проследить, у вас есть шанс использовать код в производстве, и работает ли он так, как ожидалось? – mellamokb