Что является самым простым способом в Java 6 определить, является ли данный адрес действительной маской сети? Я нашел одно решение, которое в основном создает массив действительных IP-адресов для сравнения (т. Е. «255.255.255.255», «255.255.255.254», «255.255.255.252» и т. Д.). Есть ли более простой способ или это лучший способ?Определить, действительна ли маска сети в Java
ответ
Если вы счастливы включить внешнюю зависимость, то в Apache commons.net может иметь то, что вы ищете.
Посмотрите на и его SubnetInfo вложенный класс. Вы можете построить SubnetUtils
с IP-адресом и маской. constructor выдает исключение, если ваша маска недопустима, а SubnetInfo.html#isInRange может рассказать вам, находится ли IP в диапазоне маски.
Очень приятно. У меня нет ограничений или ограничений для внешних зависимостей. – wxkevin
Этот вопрос пару лет назад, поэтому этот комментарий может быть недействительным, но я пробовал эксперимент с умышленным использованием искаженной сетевой маски (по крайней мере, я думал, что это было неверно: 205.0.0.0). Я не получил исключение из конструктора, но я смог использовать некоторые инструменты в SubnetInfo, чтобы хотя бы обнаружить проблему. – Rich
Что об этом псевдокоде:
function IS_VALID(MASK)
boolean zeroStart = false
for each byte in MASK
for each bit
if bit = 1 and zeroStart = false
continue
if bit = 1 and zeroStart = true
return INVALID_MASK
if bit = 0 and zeroStart = false
zeroStart = true
if bit = 0 and zeroStart = true
continue
return VALID_MASK
Выглядит хорошо, поскольку псевдокод идет. – wxkevin
Вы можете попробовать использовать регулярное выражение
Pattern p = Pattern.compile("^((2[0-5][0-5]|1[\\d][\\d]|[\\d][\\d]|[\\d])\\.){3}(2[0-5][0-5]|1[\\d][\\d]|[\\d][\\d]|[\\d])$");
String ip = "255.255.255.0.2";
Matcher m = p.matcher(ip);
if(m.matches()) {
//valid
}
Я не думаю, что 255.255.255.1 является действительной сеткой маски –
Это похоже на регулярное выражение для любого действительного IP-адреса. Я искал что-то, что следует правилам для сетевых масок. – wxkevin
Я думаю, ответ Serg10 является самым простым.
Если вам нужно избегать внешних зависимостей, то вы должны использовать Inet4Address для преобразования IP-адреса String в массив байтов, а затем проанализировать байты. Попытка проанализировать строку с помощью регулярных выражений или путем сравнения с фиксированным набором строк обязан дать неправильный ответ:
- Компоненты IP-адреса могут иметь ведущие нули.
- IP-адрес также может быть записан тремя, двумя или даже одним компонентом.
Обратитесь к Inet4Address javadoc за описанием того, как может выглядеть строка IP-адреса.
Спасибо за альтернативу внешней зависимости. Я в порядке с внешней зависимостью, но я уверен, что будут другие, которые найдут свой путь путем поиска здесь, кто не будет или не сможет использовать внешнюю зависимость. – wxkevin
- 1. Определить, действительна ли страница в JavaScript - ASP.NET
- 2. маска сети обсчитывать в XSL
- 3. Как определить, действительна ли строка JSON?
- 4. Могу ли я определить, действительна ли ссылка на действие?
- 5. В Swift можно определить, действительна ли CLLocation или нет?
- 6. Маска URL в java
- 7. Как определить, находится ли файл в сети?
- 8. PHP: определить, действительна ли строка, сопоставляя открытый и закрывающий теги
- 9. IP-адрес + суб проверки маска сети
- 10. проверить, действительна ли дата.
- 11. Проверьте, действительно ли BitmapData действительна
- 12. Маска кодирования файлов Java
- 13. Маска символов Java
- 14. Как определить, находится ли IP-адрес в сети?
- 15. Ошибка Java Enum не действительна
- 16. Проверка выражения cron действительна в Java
- 17. Как определить iPhone в сети?
- 18. Как проверить, действительна ли Application.MainForm?
- 19. Проверить, действительна ли дата JQuery
- 20. Как проверить, действительна ли дата?
- 21. Как проверить, действительна ли дата
- 22. Действительно ли классификация DFS ребер действительна?
- 23. C++ проверить, действительна ли дата
- 24. Проверьте, действительна ли специализация шаблона
- 25. Маска манипуляции Java HashMap ArrayList
- 26. Есть ли в сети IDE для Java?
- 27. Как реализовать проверку, действительно ли судоку действительна на Java?
- 28. маска для json property в java объекте
- 29. Java - почему маска не работает?
- 30. В python, как проверить, действительна ли дата?
Вы ищете какой-либо действующий IP-адрес или есть набор IP-адресов, которые вы хотите проверить? Любой допустимый IP (как String) будет состоять из 4 чисел, разделенных символом '.' со значением между (включенным)' 0' и '255', который вы можете проверить для этого случая. В качестве числа ip должно быть между 0 и 2^32-1. – twain249