Как получить IP-адрес любого хоста, не используя встроенную библиотечную функцию InetAddress.getbyName ()? - PullRequest
2 голосов
/ 16 марта 2019

Я делаю свой собственный итеративный DNS-резольвер, где мне нужен IP-адрес хоста, но Datagrampacket требует объект InetAddresstype. Поэтому мне пришлось использовать библиотечную функцию.

InetAddress ipAddress = InetAddress.getByName(DNSAddress);
....
//some code
....
DatagramPacket dnsReqPacket = new DatagramPacket(dnsFrame, dnsFrame.length,             ip, DNSServerPort);
....
//some code

Итак, я подумал, возможно ли создать собственную функцию getbyName () без использования библиотеки inetAddress?

1 Ответ

0 голосов
/ 16 марта 2019

Вы можете использовать java.net.InetAddress.getByAddress(byte[]).Он создает InetAddress объект из необработанного (сетевого) представления адреса.

Метод назван довольно запутанно, потому что в отличие от gethostbyaddr, он не выполнить обратный поиск:

Этот метод не блокирует, то есть обратный поиск службы имен не выполняется.

Использование InetAddress, созданного с использованием getByAddress вместе с DatagramPacket или DatagramSocket, также не обязательно запускает разрешение имен, поэтому нет риска бесконечной рекурсии (в случае Javaреализация пытается выполнить разрешение имен, используя собственную реализацию DNS).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...