2012-02-15 2 views
33

В моей программе пользователь вводит строку URL-адрес, скажем,Получите IP-адрес со строкой URL? (Java)

http://www.engineering.uiowa.edu/~hawkeng//fall01/graphics/potato.gif

как бы я получить IP-адрес этого URL? Я пробовал использовать

InetAddress address = InetAddress.getByName(urlStr); 

но результат всегда возвращается null. Каков правильный способ получить IP-адрес?

ответ

49

Попробуйте это:

InetAddress address = InetAddress.getByName(new URL(urlString).getHost()); 

Чтобы получить сырье IP:

String ip = address.getHostAddress(); 
+1

Спасибо, что работали, хотя она возвращает имя/IP-адрес. Если я хочу использовать IP-адрес для сокета, мне нужно использовать «/» в качестве разделителя, чтобы извлекать только IP-адрес или он будет работать как есть? – user1205853

+2

просто вызовите адрес.getHostAddress() для объекта InetAddess, чтобы получить строчную версию IP. Или лучше, создайте сокет непосредственно с объектом InetAddress. – brettw

+0

@brettw: Я отредактировал свой ответ одновременно с тем, что вы прокомментировали. –

10

Вы должны дать hostname для getByName() метода и возвращает

IP-адрес хоста , учитывая имя хоста.

URL url = new URL("http://www.engineering.uiowa.edu/~hawkeng//fall01/graphics/potato.gif"); 
System.out.println(url.getHost()); 
InetAddress address = InetAddress.getByName(url.getHost()); 
System.out.println(address.toString()); 

Выход = www.engineering.uiowa.edu/128.255.17.182

Чтобы получить IP address

String temp = address.toString(); 
String IP = temp.substring(temp.indexOf("/")+1,temp.length()); 
Смежные вопросы