2012-12-05 16 views

Odpowiedz

4

Można użyć klasy URL Javy z odrobiną magii Groovy ;-)

String getAddressFromString(String url) { 
    url.toURL().host 
} 

String ip = getAddressFromString('ftp://192.168.13.108/720_prev') 

println "IP Address : $ip" 

które (w wymagane) Wyjścia:

IP Address : 192.168.13.108 
+0

To wydaje się działać dla 'http:' lub 'ftp:', ale gdy próbuję użyć go na 'SSL:' url uzyskać: ' Złapany: java.net.MalformedURLException: unknown protocol: ssl' Nie sądzę, że metoda toURL() rozpoznaje adresy URL protokołów ssl. – cognoscente

4

Jeśli adres URL już ma Adres IP, który następnie konwertuje na adres URL, działa w celu wyodrębnienia adresu IP, ale jeśli nazwa hosta domeny (np. www.stackoverflow.com) znajduje się w komponencie hosta URL, a następnie trzeba wykonać wyszukiwanie DNS, które rozwiązuje się na adres. Wymaga to połączenia z InetAddress.getByName() w Java API.

Jeśli adres URL ma już adres, wówczas InetAddress.getByName() po prostu zwróci adres w niezmienionej postaci. Ponadto należy zająć się obsługą wyjątków, jeśli nazwa hosta nie może zostać przetłumaczona na adres.

 String getAddressFromString(String url) 
     throws MalformedURLException, UnknownHostException 
     { 
      String host = url.toURL().host 
      // this would be equivalent to calling new URL(url).getHost() 
      return InetAddress.getByName(host).getHostAddress() 
     } 

     String ip = getAddressFromString("http://stackoverflow.com/") 
     println "IP Address : $ip" 

wyjściowa:

IP Address : 69.59.197.21 
Powiązane problemy