2012-12-05 8 views

Antwort

4

Sie Javas URL-Klasse mit einem Hauch von Groovy Magie ;-)

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

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

println "IP Address : $ip" 

, die (wie gewünscht) Ausgänge verwenden können:

IP Address : 192.168.13.108 
+0

Diese für 'http scheint zu funktionieren:' oder 'ftp:', aber wenn ich versuche, es zu benutzen für eine 'ssl:' url ich: ' Erwischt: java.net.MalformedURLException: unbekanntes Protokoll: ssl' Ich glaube nicht, dass die toURL() - Methode ssl-Protokoll-URLs erkennt. – cognoscente

4

Wenn die URL bereits th Die IP-Adresse, die dann in eine URL konvertiert wird, dient zum Extrahieren der IP, aber wenn ein Domain-Host-Name (z. www.stackoverflow.com) wird in der URL-Host-Komponente gefunden und muss dann eine DNS-Suche durchführen, die in eine Adresse aufgelöst wird. Dies erfordert einen Aufruf von InetAddress.getByName() in der Java-API.

Wenn die URL bereits die Adresse hat, gibt InetAddress.getByName() einfach die Adresse wie sie ist zurück. Außerdem muss die Behandlung von Ausnahmen behandelt werden, wenn der Hostname nicht in eine Adresse aufgelöst werden kann.

 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" 

Ausgang:

IP Address : 69.59.197.21