Mon fichier d'hôtes (C:\WINDOWS\system32\drivers\etc\hosts) a un tas de mappages d'adresse IP à nom d'hôte:
# Switches
192.168.200.254 sw-con-ctrl
192.168.201.253 sw-con-ctrl-2
192.168.201.254 sw-con-ctrl-1
# 192.168.188.1 sw-con-ctrl-ylw-1
# 192.168.189.1 sw-con-ctrl-blu
192.168.190.62 access-console
# Routers
192.168.21.1 rtr1
192.168.22.1 rtr2
J'essaie de trouver un moyen de convertir une adresse IP en nom d'hôte par programme via les API Java.
Pseudocode:
IPAddress ip = new IPAddress("192.168.190.62");
String Host = ip.getHost();
System.out.println(Host); //prints "access-console"
J'ai essayé le code de ici et cela fonctionne. À savoir:
InetAddress addr = InetAddress.getByName("192.168.190.62");
String Host = addr.getHostName();
System.out.println(Host);
Cela fonctionne car les javadocs disent uniquement local lorsqu'aucune recherche inversée n'est nécessaire: si une adresse IP littérale est fournie, seule la validité du format d'adresse est vérifiée.
Si quelqu'un connaît un moyen sans utiliser de pots tiers pour effectuer la recherche à distance ...
Il existe des méthodes dans la classe InetAddress
pour cela. Je pense que vous voudrez soit getHostName
ou getCanonicalHostName
, selon vos besoins.
import Java.net.InetAddress;
import Java.net.UnknownHostException;
public class Main02{
public static void main(String[]args) throws UnknownHostException{
InetAddress ia = InetAddress.getByName("46.228.47.114");
System.out.println(ia.getHostName());
}
}
Production :
ir2.fp.vip.ir2.yahoo.com