Как узнать, какие IP-адреса искать из маски подсети?

Пишу простую программу для поиска по локальной сети, программа имеет несколько вариантов поиска (проверка одного IP-адреса, проверка имени хоста, проверка подсети локальной машины …. и т. Д.).

И я застрял на «проверить локальную подсеть машины» (по крайней мере, я думаю, что это может быть проблемой) !?

Хорошо, вот что может быть проблемой, поэтому я хотел бы знать, если есть способ справиться с этим в C ++.

Когда я использую getadapteraddresses()чтобы получить IP-адрес и маску подсети, чтобы я мог искать подсеть локальной машины, мои сомнения, что если getadapteraddresses() обратная подсеть — 255.255.254.0 и IP — 192.160.5.10. Первый шаг — поиск 192.168.5.0-255, но что дальше, в каком диапазоне я должен искать 192.168.6.0-255 или 192.168.4.0-255 ..?

Если есть способ определить это в c ++, любой совет был бы полезен.

Спасибо 🙂

2

Решение

Вы можете вычислить все адреса с чем-то вроде

int count = (~netmask) & 0x7FFFFFFF;
int network = ip_address & netmask;
for (int i=1; i<count; i++) {
int addr = network + i;
...
}
1

Другие решения

Чувак, я думаю, ты неправильно понял. 192.168.5.x не находится в диапазоне 255.255.254.0. Эта маска подсети допускает адреса от 192.168.0.0 до 192.168.1.255. Если 5 является частью хоста, маска должна быть 255.255.248.0.

0

По вопросам рекламы [email protected]