Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Ошибка или такое бывает?


Автор: XClan 15.1.2004, 12:16
При проверке IP после ввода в поле обнаружил странные вещи...
Если поле пустое - выдает localhost/127.0.0.0 ( почему пока без понятия)
Но такое чтоб было, в никакие рамки не лезет!!
Пишу 0.0.0.0 - пишет верно и возвращает, пишу 123.123 возвращает 123.0.0.123!!!!!
Правда если пишу нереальные АйПи типа 321.09.0.0 он выдает сообщение о неправильном IP, но не бывает такого АйПи как 0.0.0.0!
Неужели это верный способ проверки IP?
Применял я пакет java.net.InetAddress и java.io.*;
Сам код проверки выклядит так
Код

public class IP_hash {
protected IP_hash(){
}

public static String checkIP(java.lang.String targIP) {
    try{
      InetAddress ia = InetAddress.getByName(targIP);
      return ia.toString();
    } catch(UnknownHostException e){
   System.out.println("IP : " + targIP + " <<-Unknown IP address");
    return null;
  }
}
}

Есть варианты?

Автор: Sun 15.1.2004, 13:10
Видимо в классе InetAddress нет строгой проверки на валидность IP-адресов. Ты можешь написать свою проверку, используя регулярные выражения.

Автор: AntonSaburov 15.1.2004, 13:11
Цитата
getByName(targIP);

Посмотри, что эта функция тебе возвращает.

Автор: XClan 15.1.2004, 13:43
Возвращает hostname | IPaddress, хотя первое для меня не нужна!

Автор: AntonSaburov 15.1.2004, 14:41
Читайте документацию - это иногда проясняет мысли smile.gif

Textual representation of IPv4 address used as input to methods takes one of the following forms:
d.d.d.d
d.d.d
d.d
d

When four parts are specified, each is interpreted as a byte of data and assigned, from left to right, to the four bytes of an IPv4 address.

When a three part address is specified, the last part is interpreted as a 16-bit quantity and placed in the right most two bytes of the network address. This makes the three part address format convenient for specifying Class B net- work addresses as 128.net.host.

When a two part address is supplied, the last part is interpreted as a 24-bit quantity and placed in the right most three bytes of the network address. This makes the two part address format convenient for specifying Class A network addresses as net.host.

When only one part is given, the value is stored directly in the network address without any byte rearrangement.

For methods that return a textual representation as output value, the first form, i.e. a dotted-quad string, is used.

Автор: XClan 15.1.2004, 15:02
Да я читал ее, но она работает только в 1.4.x версии! ;( В том то и дело!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)