Это программа для печати имени хоста с IP, но это не печать HostName - PullRequest
0 голосов
/ 10 сентября 2011
package networking;
import java.net.*;
public class HostIpAddess {
    public static void main(String args[]){
        try {
            InetAddress address = InetAddress.getByName("204.29.207.217");
            System.out.println("IP Name:"+address.getHostName());
        }catch (UnknownHostException ex) {
            System.out.println("Error");
        }
    }
}

Почему программа доставляет IP-адрес, а не результат обратного просмотра DNS?

Ответы [ 3 ]

3 голосов
/ 10 сентября 2011

IP-адрес 204.29.207.217 не имеет записи PTR.

http://en.wikipedia.org/wiki/Reverse_DNS_lookup

2 голосов
/ 10 сентября 2011

Ваш код работает: проблема в том, что InetAddress.getByName возвращает имя хоста только

  • , если оно существует (т. Е. Обратный поиск возвращает имя хоста)
  • , еслиJVM может выполнить обратный поиск (из документации «[...] Если операция не разрешена, она вернет текстовое представление IP-адреса [...]"

В вашем случае обратный поиск DNS по данному IP-адресу не возвращает результат:

$ host 204.29.207.217
Host 217.207.29.204.in-addr.arpa not found: 2(SERVFAIL)

Вы можете выполнить тестовый поиск на http://www.dmoz.org/search?q=204.29.207.217&cat=all&all=no

0 голосов
/ 10 сентября 2011

Читая документацию по Java API (вы ее читали?), Я бы предложил попробовать getCanonicalHostName().

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