Как сделать то же самое в java-коде и где использовать IP-адрес и имя хоста DNS-сервера.
Dark Matter
Другой запрос: нам нужно будет предоставить IP-адрес DNS-сервера в любом случае, или он попытается найти его по умолчанию. Я немного запутался здесь, нужно ли нам использовать только имя хоста или имя хоста + IP-адрес DNS-сервера?
Dark Matter
1
Поиск адреса по имени несложный. Пока вы просто используете системный преобразователь по умолчанию. Итак: вам действительно нужно использовать адрес DNS-сервера?
АГИ
У меня тот же вопрос: действительно ли мне нужен адрес DNS-сервера или он будет разрешать адрес по умолчанию. TWW Я использую сервер AIX Unix.
Скажем, если у меня есть IP-адрес dns 10.37.221.152 и имя хоста говорит "www.student.com", то как я могу найти IP-адрес.
Dark Matter
3
@DarkMatter: InetAddressдолжен получить разрешенный адрес DNS, когда вы попросите getHostAddress(). Я не уверен, что вы можете заставить его использовать определенный DNS-сервер.
thegrinner
Значит, он должен в идеале разрешиться сам по себе без явного указания адреса DNS-сервера программистом, верно?
Dark Matter
1
@DarkMatter Да. Я считаю, что он использует любой DNS-сервер, установленный на самом компьютере.
Как было сказано выше, вы можете использовать,
InetAddress.getByName("hostName")но это может дать вам кешированный IP-адрес. Прочтите документацию по java для того же. Если вы хотите получить IP-адрес от DNS, вы можете использовать:
В дополнение к тому, что указал @daksh, вы можете отключить кеш ответов DNS, как предлагается здесь, но имейте в виду время отключения кеша, а также кеширование ответов DNS, сделанных вашей ОС, а также другими DNS-серверами, как предлагается здесь . Надеюсь, это поможет
CrazyGreenHand
По какой-то причине этот вызов дает мне положительный результат для любого имени хоста. Я думал, что по умолчанию использую свой IP-адрес, но нет, он дает мне определенный IP-адрес для любого неизвестного хоста.
dig <hostname>
в командной строке?Ответы:
Взгляните
InetAddress
и наgetHostAddress()
метод.InetAddress address = InetAddress.getByName("www.example.com"); System.out.println(address.getHostAddress());
источник
InetAddress
должен получить разрешенный адрес DNS, когда вы попроситеgetHostAddress()
. Я не уверен, что вы можете заставить его использовать определенный DNS-сервер.Сделать это можно так:
for(InetAddress addr : InetAddress.getAllByName("stackoverflow.com")) System.out.println(addr.getHostAddress());
источник
Вы можете использовать для этого InetAddress. Попробуйте приведенный ниже код,
InetAddress address = InetAddress.getByName("www.yahoo.com"); System.out.println(address.getHostAddress()); System.out.println(address.getHostName());
источник
Как было сказано выше, вы можете использовать,
InetAddress.getByName("hostName")
но это может дать вам кешированный IP-адрес. Прочтите документацию по java для того же. Если вы хотите получить IP-адрес от DNS, вы можете использовать:InetAddress[] ipAddress = DNSNameService.lookupAllHostAddr("hostName");
источник