Java: convertir una cadena (que representa una IP) a InetAddress [duplicate]

2 minutos de lectura

avatar de usuario
robar

Posible duplicado:

¿Hay una manera fácil de convertir String a Inetaddress en Java?

Estoy tratando de convertir una cadena (que representa una dirección IP, por ejemplo 10.0.2.50) en una InetAddress objeto

De acuerdo con la API, es posible crear un objeto que proporcione una cadena que represente un nombre de host (por ejemplo, www.google.ch). Esta no es una opción para mí ya que no tengo el nombre de host para cada objeto InetAddress que quiero crear (además de que toma demasiado tiempo).

¿Es posible convertir una cadena (por ejemplo, 10.0.2.50) en una InetAddress objeto? (según la api es posible hacerlo si tienes la IP como byte[]pero ¿cómo convierto un String que contiene una IP en byte[]?)

  • No encontré este, de hecho es el mismo problema.

    – robar

    6 abr 2011 a las 20:43

Simplemente llame InetAddress.getByName(String host) pasando su dirección IP de texto.

Del javadoc: 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.

InetAddress javadoc

  • Quienes usen esto, tengan en cuenta que si la dirección IP no es válida, el tiempo de espera para la búsqueda es lo suficientemente largo como para que, cuando se hace repetidamente, el programa se ejecute lentamente.

    – Volteado

    17 de diciembre de 2014 a las 13:19


  • Esta es una mala idea si todo lo que intenta hacer es analizar las direcciones IP, ya que getByName también realizará búsquedas de nombres de host. Si se pasa un nombre de host a su función, estará realizando E/S de red síncrona donde no pretendía estar.

    –Glenn Maynard

    25/03/2015 a las 17:00

  • @GlennMaynard: el código JDK real verifica si el primer carácter es un dígito y, en caso afirmativo, simplemente lo analiza con IPAddressUtil.

    –Andris Birkmanis

    20/10/2016 a las 20:57

  • @AndrisBirkmanis Pero si alguien pasa un nombre de host (por ejemplo, porque está analizando un archivo de configuración o similar), eso no es lo que sucederá. Si solo tiene la intención de analizar una dirección IP, debe usar una función que solo analice direcciones IP.

    –Glenn Maynard

    4 de noviembre de 2016 a las 22:28

  • IPAddressUtil en sun.net.util es la mejor alternativa. Pero debemos ser conscientes de esto. oracle.com/java/technologies/faq-sun-packages.html

    – arulraj.net

    21 de julio de 2020 a las 0:34

De la documentación de InetAddress.getByName(String host):

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. Si se proporciona una dirección IP literal, solo se comprueba la validez del formato de la dirección.

Entonces puedes usarlo.

¿Ha sido útil esta solución?