Estoy tratando de convertir cadenas en Inetaddress
. No estoy tratando de resolver nombres de host: las cadenas son direcciones ipv4. ¿Funciona InetAddress.getByName(String host)
? ¿O tengo que analizarlo manualmente?¿Existe una manera fácil de convertir String a Inetaddress en Java?
Respuesta
com.google.common.net.InetAddresses.forString(String ipString)
es mejor para esto ya que no hará una búsqueda de DNS independientemente de qué cadena se le pasa.
Sí, eso funcionará. The API es muy claro en esto ("El nombre de host puede ser un nombre de máquina, como" java.sun.com ", o una representación textual de su dirección IP"), y, por supuesto, podría verificarlo fácilmente.
Gracias, busqué la API, y se perdió esa línea. – TiansHUo
¿Cuál es cuando host es un patrón como 192.168.0. *? ¿Eso funcionará también? En cuanto al documento Inet4Address, parece que hay soporte para esto. – Paranaix
@Paranaix, no, lanzará una 'IllegalArgumentException' con el mensaje" especificación de comodín de host no válido " –
Puedes probar using a regular expression to filter-out non-numeric IP addresses antes de pasar el String
al getByName()
. Entonces getByName()
no intentará la resolución del nombre.
Cuidado: parece que analizar una dirección no válida como InetAddress.getByName("999.999.999.999"
) se no resultado de una excepción como uno podría esperar de la frase de la documentación:
la validez del formato de dirección se comprueba
Empíricamente, me encuentro obteniendo una instancia de InetAddress con la dirección IP bruta de la máquina local y la dirección IP no válida como nombre de host. ¡Ciertamente esto no era lo que esperaba!
A partir de Java 7, arrojará una excepción UnknownHostException; no he verificado antes a Javas, pero también esperaría una excepción allí. –
The open-source IPAddress Java library validará todas las representaciones estándar de IPv6 e IPv4 y lo hará sin búsqueda de DNS. Descargo de responsabilidad: soy el gerente de proyecto de esa biblioteca.
El siguiente código hará lo que usted está solicitando:
String s = "1.2.3.4";
try {
IPAddressString str = new IPAddressString(s);
IPAddress addr = str.toAddress();
InetAddress inetAddress = addr.toInetAddress(); //IPv4 or IPv6
if(addr.isIPv4() || addr.isIPv4Convertible()) {//IPv4 specific
IPv4Address ipv4Addr = addr.toIPv4();
Inet4Address inetAddr = ipv4Addr.toInetAddress();
//use address
}
} catch(AddressStringException e) {
//e.getMessage has validation error
}
- 1. Java: Convertir una cadena (que representa un IP) para InetAddress
- 2. Java: inetaddress a la conversión de cadena
- 3. ¿Existe una manera fácil de convertir un valor booleano a un número entero?
- 4. jQuery/JavaScript: convertir píxeles a em de una manera fácil
- 5. Cómo convertir String a long en Java?
- 6. ¿Existe una buena manera de convertir BitmapSource a Bitmap?
- 7. ¿hay alguna manera simple de convertir mi objeto XML a String en java?
- 8. ¿Existe alguna manera fácil de aleatorizar una lista en VB.NET?
- 9. Convertir Java String en sql.Timestamp
- 10. ¿Existe alguna manera fácil de convertir clases de C# a PHP?
- 11. ¿Existe alguna manera fácil de convertir el código jquery a javascript?
- 12. ¿Existe alguna manera fácil de usar InternalsVisibleToAttribute?
- 13. Forma fácil de obtener una representación de cadena de Map <String, String []> en java?
- 14. Convertir array MD5 a String java
- 15. Convertir System.Array a string []
- 16. ¿Hay alguna manera fácil de convertir Criteria a HQL?
- 17. ¿Existe una manera fácil de agregar un borde a una vista en Xcode para iOS 5.1
- 18. ¿Existe alguna manera fácil de convertir texto en HTML en JavaScript?
- 19. Cómo convertir String a DOM ¿Objeto de documento en Java?
- 20. Cómo convertir org.jdom.Document a String
- 21. En Scala, ¿hay alguna manera fácil de convertir una clase de caso en una tupla?
- 22. Cómo convertir String to Reader en Java
- 23. Java: ¿Existe una manera fácil y rápida de armar conjuntos AND, OR o XOR?
- 24. ¿Existe alguna manera fácil de integrar scaladoc en IntelliJ Idea?
- 25. Cómo convertir JTextField a String y String en JTextField?
- 26. Convertir el conjunto de resultados de Java a String array
- 27. ¿Existe alguna manera fácil de calcular y formatear los intervalos de hora/fecha en Java?
- 28. Cómo convertir Joda LocalDate a String en Java?
- 29. Cómo convertir una HttpServletRequest a String?
- 30. ¿Existe alguna manera más fácil de firmar un documento XML en Java?
Esto es parte [de Guava] (http://docs.guava-libraries.googlecode.com/git-history/v10.0.1/javadoc/com/google/common/net/InetAddresses.html). –
Debería ser 'com.google.common.net.InetAddresses.forString' (con' InetAddresses' con mayúscula A). SO no me permitirá corregir eso en tu respuesta, ya que la edición tiene que tener al menos 6 caracteres. ;-) De todos modos, gracias, estaba buscando, y una vez más, Guava salva el día. – silmeth