2013-11-01 5 views
-1

мне нужна помощь в написании функции в C/C++, которая принимает два параметра: IP адрес и Маски подсети.Функция, которая возвращает список IP-адресов для данного IP-адреса и маски подсети

Функция должна повторно отображать список всех IP-адресов, которые находятся в связанной сети.

Например: Указанные два параметра: IP адрес = 192.168.33.72 и маска = 255.255.255.192 функция возвращает список, которые содержат IP-адресов 192.168.33.65 для 192.168.33.126.

+1

известный комментарий: что ты пробовал? – MOHAMED

ответ

3

1) сначала вы можете преобразовать ipaddress и subnetmask из формата строки в двоичный формат с inet_pton().

2) сделать проверку на subnetmask маска должна быть действительна маска подсети

3) получить subnetmask обратное значение (~subnetmask)

4)

for (i=1; i<(~subnetmask); i++) { 

    ip = ipaddress & (subnetmask + i); 

    //append ip to your ip list 

} 
+0

Нет ничего, что говорит о том, что маска подсети не может установить LSB ... в этом случае ваш код будет генерировать кучу недействительных IP-адресов. – Floris

+0

@Floris, что означает LSB? означает первый бит в двоичном формате маски подсети? – MOHAMED

+0

LSB = младший бит. Представьте, что маска 255.255.255.193 - посмотрите, что происходит в вашем коде. – Floris