Ответ 1
Я попробовал код здесь, и он работает. А именно:
InetAddress addr = InetAddress.getByName("192.168.190.62");
String host = addr.getHostName();
System.out.println(host);
Мой файл hosts (C:\WINDOWS\system32\drivers\etc\hosts) имеет кучу IP-адресов для сопоставления имен узлов:
# 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-blk-1
# 192.168.189.1 sw-con-ctrl-red
192.168.190.62 access-console
# Routers
192.168.21.1 rtr1
192.168.22.1 rtr2
Я пытаюсь найти способ конвертировать из IPAddress в HostName программно через Java API.
псевдокод:
IPAddress ip = new IPAddress("192.168.190.62");
String host = ip.getHost();
System.out.println(host); //prints "access-console"
Я попробовал код здесь, и он работает. А именно:
InetAddress addr = InetAddress.getByName("192.168.190.62");
String host = addr.getHostName();
System.out.println(host);
В классе InetAddress
существуют методы. Я думаю, вам понадобится getHostName
или getCanonicalHostName
, в зависимости от ваших потребностей.
вы можете попробовать с этим кодом. Я думаю, что его полезно
import java.net.InetAddress;
import java.net.UnknownHostException;
public class IpTest {
public static void main(String args[]) throws UnknownHostException {
InetAddress addr = InetAddress.getLocalHost();
String ipAddress = addr.getHostAddress();
System.out.println("IP address of localhost : " + ipAddress);
String hostname = addr.getHostName();
System.out.println("Name of hostname : " + hostname);
}
}
Это работает, поскольку javadocs говорят только локально, когда не требуется обратный поиск: Если задан литеральный IP-адрес, проверяется только правильность формата адреса.
Если кто-то знает способ, не используя сторонние банки, чтобы выполнить удаленный поиск...