web-dev-qa-db-fra.com

Création d'un objet InetAddress dans Java

J'essaie de convertir une adresse spécifiée par un numéro IP ou un nom, les deux en chaîne (i.e. localhost ou 127.0.0.1), dans un objet InetAdress . Il n'y a pas de constructeur mais plutôt des méthodes statiques qui retournent un InetAddress . Donc, si je reçois un nom d'hôte, ce n'est pas un problème, mais que se passe-t-il si je reçois le numéro IP? Il y a une méthode qui obtient octet [] mais je ne sais pas comment cela peut m'aider. Toutes les autres méthodes obtiennent le nom d'hôte.

documentation de l'API InetAddress

68
yotamoo

Vous devriez pouvoir utiliser getByName ou getByAddress.

Le nom d'hôte peut être un nom d'ordinateur, tel que "Java.Sun.com" ou une représentation textuelle de son adresse IP.

InetAddress addr = InetAddress.getByName("127.0.0.1");

La méthode qui prend un tableau d'octets peut être utilisée comme ceci:

byte[] ipAddr = new byte[]{127, 0, 0, 1};
InetAddress addr = InetAddress.getByAddress(ipAddr);
118
Bala R

Depuis l'API pour InetAddress

Le nom d'hôte peut être un nom d'ordinateur, tel que "Java.Sun.com" ou une représentation textuelle de son adresse IP. Si une adresse IP littérale est fournie, seule la validité du format de l'adresse est vérifiée.

9
karakuricoder
ip = InetAddress.getByAddress(new byte[] {
        (byte)192, (byte)168, (byte)0, (byte)102}
);
5
Musa

InetAddress.getByName fonctionne également pour l'adresse IP.

À partir du JavaDoc

Le nom d'hôte peut être un nom d'ordinateur, tel que "Java.Sun.com" ou une représentation textuelle de son adresse IP. Si une adresse IP littérale est fournie, seule la validité du format de l'adresse est vérifiée.

3
kliu

L'API est assez facile à utiliser.

// Lookup the dns, if the ip exists.
 if (!ip.isEmpty()) {
     InetAddress inetAddress = InetAddress.getByName(ip);
     dns = inetAddress.getCanonicalHostName(); 
 }
3
Bill