Это, наверное, не очень вменяемое, но об этом было интересно думать.
Поскольку пространство IP-адресов является 32-разрядным, вы можете написать функцию для преобразования IP-адресов в 32-разрядные целые числа без знака. Затем вы можете добавить или вычесть 1 или столько, сколько хотите, и преобразовать обратно в IP-адрес. Вам не придется беспокоиться о проверке диапазона.
В псевдокоде для 192.123.34.134 вы должны сделать:
int i = (192 << 24) + (123 << 16) + (34 << 8) + 134
В целом, для a.b.c.d:
int i = (a << 24) + (b << 16) + (c << 8) + d
Теперь измените i
столько, сколько хотите (i++
, i+=10000
) и конвертируйте обратно:
String ip = (i >> 24) + "." +
((i >> 16) mod 256) + "." +
((i >> 8) mod 256) + "." +
(i mod 256);
Извините за синтаксис - я не мог написать C ++, чтобы спасти себя.
MK