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.
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);
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.
ip = InetAddress.getByAddress(new byte[] {
(byte)192, (byte)168, (byte)0, (byte)102}
);
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.
L'API est assez facile à utiliser.
// Lookup the dns, if the ip exists.
if (!ip.isEmpty()) {
InetAddress inetAddress = InetAddress.getByName(ip);
dns = inetAddress.getCanonicalHostName();
}