Редактировать : Мой предыдущий ответ изменился бы с 128.0.0.0
до 255.255.255.255
до 0.0.0.0
до 127.255.255.255
. Предположительно, вы хотите перейти от 0.0.0.0
к 255.255.255.255
, поэтому я отредактировал свое решение для этого.
int i = -1;
do {
i++;
int b1 = (i >> 24) & 0xff;
int b2 = (i >> 16) & 0xff;
int b3 = (i >> 8) & 0xff;
int b4 = (i ) & 0xff;
//Now the IP is b1.b2.b3.b4
} while(i != -1);
Примечание: если вы не уверены, как закончится этот цикл (то есть, как добавление от 1 до -1 достаточного количества раз делает его снова -1), прочитайте дополнение к двум . По сути, добавление единицы к Integer.MAX_VALUE
приводит к Integer.MIN_VALUE
и не вызывает каких-либо исключений.
Старый ответ . По-прежнему попадает на все IP-адреса, но, вероятно, не в том порядке, в котором вы хотите:
for(long n = Integer.MIN_VALUE; n <= Integer.MAX_VALUE; n++)
{
int i = (int)n;
int b1 = (i >> 24) & 0xff;
int b2 = (i >> 16) & 0xff;
int b3 = (i >> 8) & 0xff;
int b4 = (i ) & 0xff;
//Now the IP is b1.b2.b3.b4
}
Обратите внимание: если переменная управления циклом была int
вместо long
, это был бы бесконечный цикл (поскольку все int
s всегда <= Integer.MAX_VALUE
).